【问题标题】:Unknown label type: 'continuous'未知标签类型:“连续”
【发布时间】:2017-08-13 16:08:39
【问题描述】:

我的队友, 有问题
----------------------

   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:未知标签类型:“连续”

【问题讨论】:

  • 请尝试正确地对代码进行代码块-您可以使用4个空格,谢谢:)
  • 哪一行报错了? Python 解释器提供详细的堆栈跟踪,准确指出错误的来源。不要忽略它。

标签: python pandas scikit-learn knn


【解决方案1】:

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

在scikit-learn中做分类时,y是一个整数向量 或字符串。

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

注意,如果你只是想避免错误,你可以这样做

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

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

【讨论】:

    【解决方案2】:

    我认为您实际上是在尝试进行回归而不是分类,因为您的代码看起来很像您想要预测 每年花费的金额。在这种情况下,使用

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

    相反。如果你真的有一个分类任务,例如你想分类为('每年花费的金额很低','每年花费的金额很高',......),你应该离散标签并将它们转换为字符串或整数(如@Miriam Farber 所解释),根据在这种情况下您需要手动设置的阈值。

    【讨论】:

    • Hye ml4294,你是对的伙伴,现在你能帮我解决这个问题吗?我想对这些数据进行 KNN 聚类。我该怎么做,干杯
    • 我对此并不十分熟悉,但我认为您可以像以前一样使用knn.fit(X_train, y_train) 从提供的数据中插入函数,然后您可以预测给定@987654323 的值@ 使用prediction = knn.predict(x) 来估计这个x 的值。这能回答你的问题吗?
    猜你喜欢
    • 2018-01-20
    • 2017-08-29
    • 2018-12-10
    • 2018-02-15
    • 2021-07-17
    • 2020-05-11
    • 2018-07-22
    • 2021-04-04
    • 2022-01-24
    相关资源
    最近更新 更多