繁体   English   中英

未知标签类型:“连续”

[英]Unknown label type: 'continuous'

我的团队成员,遇到问题
----------------------

   Avg.SessionLength TimeonApp  TimeonWebsite LengthofMembership Yearly Amount Spent
    0   34.497268   12.655651    39.577668     4.082621                 587.951054
    1   31.926272   11.109461    37.268959     2.664034                 392.204933
    2   33.000915   11.330278    37.110597     4.104543                 487.547505
    3   34.305557   13.717514    36.721283     3.120179                 581.852344
    4   33.330673   12.795189    37.536653     4.446308                 599.406092
    5   33.871038   12.026925    34.476878     5.493507                 637.102448
    6   32.021596   11.366348    36.683776     4.685017                 521.572175 

想要申请KNN

X = df[['Avg. Session Length', 'Time on App','Time on Website', 'Length of Membership']] 
y = df['Yearly Amount Spent'] 

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

from sklearn.neighbors import KNeighborsClassifier 
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train,y_train)

ValueError:未知标签类型:“连续”

Yearly Amount Spent列中的值是实数,因此它们不能用作分类问题的标签(请参见此处 ):

在scikit-learn中进行分类时,y是整数或字符串的向量。

因此,您会得到错误。 如果要构建分类模型,则需要决定如何将它们转换为有限的一组标签。

请注意,如果您只是想避免该错误,则可以执行

import numpy as np
y = np.asarray(df['Yearly Amount Spent'], dtype="|S6")

这会将y的值转换为所需格式的字符串。 但是,每个标签只会出现在一个样本中,因此您无法真正使用这样的标签集构建有意义的模型。

我认为您实际上是在尝试进行回归而不是分类,因为您的代码看起来很像您想预测以数字表示的年度花费。 在这种情况下,请使用

from sklearn.neighbors import KNeighborsRegressor
knn = KNeighborsRegressor(n_neighbors=1)

代替。 例如,如果您确实有一个分类任务,则想将其分类为类似的类(“每年花费少”,“每年花费高” ...),则应离散化标签并将其转换为字符串或整数(如@Miriam Farber所述),具体取决于您在这种情况下需要手动设置的阈值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM