Python 在SKlearn中,即使与x训练集中的y训练集存在弱相关性

Python 在SKlearn中,即使与x训练集中的y训练集存在弱相关性,python,machine-learning,scikit-learn,neural-network,Python,Machine Learning,Scikit Learn,Neural Network,我们使用Python+SK学习MLPClassizer。我们得到了相对糟糕的结果。作为健全性检查,我们尝试将y所需的输出添加到x输入集中。在这种情况下,您希望获得100%的分数。但事实并非如此,分数相当低(20%),这比随机猜测要好得多,但仍然非常糟糕。我们有大约150个输入(其中大部分是布尔值)和1个输出(1到1500之间的整数)。当我们将数字分成5个类别(0到4之间的整数)时,分数约为96% import numpy as np from sklearn.neural_network imp

我们使用Python+SK学习MLPClassizer。我们得到了相对糟糕的结果。作为健全性检查,我们尝试将y所需的输出添加到x输入集中。在这种情况下,您希望获得100%的分数。但事实并非如此,分数相当低(20%),这比随机猜测要好得多,但仍然非常糟糕。我们有大约150个输入(其中大部分是布尔值)和1个输出(1到1500之间的整数)。当我们将数字分成5个类别(0到4之间的整数)时,分数约为96%

import numpy as np
from sklearn.neural_network import MLPClassifier
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import StandardScaler
import cPickle
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error


scaler = StandardScaler()
xset = np.genfromtxt('xkey.csv', delimiter=",")
yset = np.genfromtxt('ykey.csv', delimiter=",")
# yset = np.rint((5-1)*(yset)/np.max(yset))
print "Number of categories: " + str(np.max(yset)+1)
X_train, X_test, y_train, y_test = train_test_split(xset, yset, test_size=0.10)
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)

clf = MLPClassifier(algorithm='adam', alpha=1e-5, hidden_layer_sizes=(100,20))
clf.fit(X_train, y_train)

score = clf.score(X_test,y_test)
print ("score: "+str(score))

ypredicted = clf.predict(X_test)
sqerr = mean_squared_error(ypredicted, y_test)
err = mean_absolute_error(ypredicted, y_test)

print ("err: " + str(err))
print ("sqerr: " + str(sqerr))

请解释您的y-训练集和x-训练集是什么。你的y-训练集真的是你的x-训练集的“目标”吗?似乎您混淆了数据集和目标的概念。x-training集指的是输入对象,y-training集指的是期望的输出值。这1500个数字之间有关系吗?“2”比“1200”更像“3”吗?是的!这是一种排序。请注意,这是一个分类器。你们有多少种不同的“课程”?(即,在0和1500之间有多少不同的排名?每个“班级”是否有足够的培训数据)为了使分类器正常工作?如果每个训练实例的排名都不同,那么您可能不应该尝试分类,而应该尝试回归,因此您必须使用
mlprepressor
。请解释您的y-训练集和x-训练集是什么。您的y-训练集确实是您的“目标”吗对于x-training集?您似乎混淆了数据集和目标的概念。x-training集指的是输入对象,y-training集指的是所需的输出值。这1500个数字之间是否存在任何关系?2与“3”比与“1200”更相似?是的!这是一种排名。请注意,这是一个分类器。您有多少不同的“类”(即0到1500之间有多少不同的排名?每个“类”是否有足够的培训数据为了使分类器正常工作?如果每个训练实例的排名都不同,那么您可能不应该尝试分类,而应该尝试回归,因此您必须使用
mlprepressor