为什么 MLPclassifier 不能处理我的数据?

Why doesn't MLPclassifier work on my data?

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

我的数据框有 'overall'、'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)

我的dataframe是这个

我将 'overall'、'reviewerID'、'brand' 的 3 列分配给 X,将 'asin' 的 1 列分配给下面的 y:

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)

我将 Sklearn 库用于 MLP 分类器。

from sklearn.neural_network import MLPClassifier
import time


training_time_avg=0
error_cost_avg=0
i=0

我应用单层感知器网络求解器来处理我的数据 10 次。我还尝试拟合我的训练数据并使用 'time':

计算时间
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 上的 Variable Explorer 屏幕,一切正常,直到 clf.fit(X_train, y_train) line.

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

一切看起来都很好。您的数据非常大,因此您需要稍等片刻才能适应它。