为什么 MLP分类器对我的数据不起作用?



我想通过查看人们之前购买的产品来预测他们将购买的产品。

我的数据帧有"整体"、"reviewerID"、"asin"、"brand"。

overall - rating of the product
reviewerID - ID of the reviewer
asin - ID of the product
brand - brand name

我的代码如下:

import pandas as pd 
import numpy as np
first = pd.read_pickle("customers_more_than_one_product.pkl")
data = pd.read_pickle("customers_more_than_one_product.pkl")
data['reviewerID'] = data["reviewerID"].rank(method='dense').astype(int)
data['asin'] = data["asin"].rank(method='dense').astype(int)
data['brand'] = data["brand"].rank(method='dense').astype(int)
data = data.drop(["reviewTime","reviewText","title"],1)

我的数据帧是这样的。

我给X分配了3列"整体"、"reviewerID"、"品牌",下面给y分配了1列"asin":

X= data["reviewerID"].values
x1=data["overall"].values
x2=data["brand"].values
X=np.vstack(X, x1,x2).T
y= data["asin"].values

我对数据进行了拆分,使得随机选择的70%元组用于训练,而30%元组用于训练用于测试。

from sklearn.model_selection import train_test_split
X_train,X_test , y_train , y_test = train_test_split(X, y, test_size=0.3, random_state=1)

我为MLP Classsifier使用了Sklearn库。

from sklearn.neural_network import MLPClassifier
import time

training_time_avg=0
error_cost_avg=0
i=0

我应用单层感知器网络求解器来处理我的数据10次。此外,我还试图拟合我的训练数据,并使用"时间"计算时间:

while i < 10:
clf= MLPClassifier(hidden_layer_sizes=(), max_iter=100)
start = time.time()
clf.fit(X_train, y_train)
stop = time.time()
accuracy=clf.score(X_test, y_test)
error_rate = 1 - accuracy
training_time_avg = training_time_avg + (stop - start)
error_cost_avg=error_cost_avg + error_rate
i=i+1

我打印了平均训练时间和错误成本我的结果。

print("max_iter:",100) 
print("nTraining Time Average (in ms): ",(training_time_avg/10))
print("Error Average (cost): ", (error_cost_avg/10))

然而,我的代码一直在运行,尽管我在运行代码时没有出现任何错误。这就像一个无休止的循环。我检查了Spyder上的变量资源管理器屏幕,一切正常,直到clf.fit(X_train,y_train(行。

有人能帮我解决这个问题吗?或者,通过查看一个人之前购买的产品,我可以使用哪种方法来预测他们将购买的产品?

一切看起来都很好。你有非常大的数据,所以你应该再等一段时间来适应它

最新更新