在不匹配的长度数据集SciKit Learn上训练分类器

时间:2017-05-17 03:26:06

标签: python machine-learning scikit-learn

我正在使用类似于以下内容的数据集:

X_values(x,y,z坐标列表):

c

Y_values(描述​​符列表):

[

   [(32.0, 22.0, -2.0), (32.0, 22.0, -2.0), (28.0, 50.0, 6.0), (28.0, 14.0, 56.0), (-26.0, 56.0, 6.0), (-18.0, 50.0, 4.0), (14.0, -36.0, 50.0), (-16.0, -70.0, -6.0), (-14.0, -6.0, 4.0), (18.0, -46.0, -28.0), (28.0, 12.0, 54.0), (28.0, 12.0, 54.0), (-26.0, 62.0, 12.0), (-28.0, 55.0, 5.0), (46.0, -76.0, 6.0), (-30.0, -88.0, 28.0), (-8.0, -70.0, -4.0), (50.0, -58.0, -16.0), (-30.0, -88.0, 28.0), (14.0, -40.0, 50.0), (40.0, -76.0, -2.0), (-64.0, -54.0, -4.0), (10.0, -16.0, 44.0), (14.0, 0.0, 6.0), (14.0, 0.0, 6.0), (-12.0, -4.0, 0.0), (14.0, 0.0, 6.0), (30.0, 22.0, -6.0), (30.0, 22.0, -6.0), (-30.0, 60.0, 12.0), (-26.0, 58.0, 4.0)]
   ...
]

X_values中的每个列表对应于Y_values的相应索引处的列表。我试图根据术语为X_valyes创建一个分类器(反之亦然),但我无法隔离单个坐标和单个术语之间的关系。我试图用Sci-kit learn运行K_nearest邻居分类器:

[ 
   ['Aged', 'Aged, 80 and over', 'Cognition', 'Dopamine', 'Female', 'Humans', 'Image Processing, Computer-Assisted', 'Magnetic Resonance Imaging', 'Male', 'Memory, Short-Term', 'Middle Aged', 'Neostriatum', 'Neuropsychological Tests', 'Positron-Emission Tomography', 'Psychomotor Performance', 'Radiopharmaceuticals', 'Tyrosine']
   ...
]

但我相信错误源于不匹配的列。是否有更好的分类算法可以根据这些参数应用于此数据集?

2 个答案:

答案 0 :(得分:0)

我认为模拟问题的最佳方法是分离坐标并将它们视为多个要素。让我用线性回归来解释它如何帮助。

假设您的功能为XYZ,那么您将拥有第一个训练示例(32.0,22.0, - 2.0)并且我将调用学习参数(权重)theta以下假设:

h(x) = theta_1 * X + theta_2 * Y + theta_3 * Z + bias_term

这将代表第一组参数的假设,但是如果您可以对其进行概括,那么您可以在带有矢量列的矩阵中转换训练样例(输入):

X' = [ X Y Z]

现在,您似乎正在尝试将其建模为监督学习问题,因为您有数据标签。对于KMeans问题,你会有类似的东西

X = np.array([[32.0, 22.0, -2.0],[...],[...]])
knn = NearestNeighbors(n_neighbors= NUM_CLUSTERS, algorithm='ball_tree').fit(X)

答案 1 :(得分:0)

此任务可能适用于决策树分类器,您可以查看使用详细信息here。但这很简单,就像这样:

from sklearn import tree
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X_values , Y_values )

其中X_values和Y_values是您描述的数组。

您还可以尝试使用单热编码将标签转换为0和1的数组,然后使用均方损失函数或分类损失熵训练神经网络,但可能需要大量数据才能避免过度拟合。 MLP和one-hot编码都在sklearn上实现。查看thisthis