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

2024-10-01 09:33:49 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的数据框有“总体”、“审阅者ID”、“asin”、“品牌”

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是这个

我在下面给X分配了3列,分别是“总体”、“审阅者ID”、“品牌”,给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上的Variable Explorer屏幕,一切都正常,直到clf.fit(X\u train,y\u train)

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


Tags: 数据testimportiddatatime产品train