【问题标题】:I'm seeing a type error I can't seem to solve when using sklearn使用 sklearn 时,我看到一个似乎无法解决的类型错误
【发布时间】:2021-04-05 08:47:24
【问题描述】:

我敢打赌,这对某人来说是一个简单的解决方法,但我绞尽脑汁,似乎找不到答案...让我们从我的代码开始:

    # -*- coding: utf-8 -*-
"""
Spyder Editor

"""
import pandas
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report
import sklearn.metrics
import os

os.chdir("..")

# Set Display options
pandas.set_option('display.max_columns', None)
pandas.set_option('display.max_rows', None)

# Read in the Mars Crater Data
print("reading data set...")
data = pandas.read_csv('marscrater2_pds.csv', low_memory=(False))
print("cleaning data...")
data_clean = data.dropna()
data_clean['DIAM_CIRCLE_IMAGE'] = pandas.to_numeric(data_clean['DIAM_CIRCLE_IMAGE'], downcast="float")
data_clean['DEPTH_RIMFLOOR_TOPOG'] = pandas.to_numeric(data_clean['DEPTH_RIMFLOOR_TOPOG'], downcast="float")
data_clean['LATITUDE_CIRCLE_IMAGE'] = pandas.to_numeric(data_clean['LATITUDE_CIRCLE_IMAGE'], downcast="float")
data_clean['LONGITUDE_CIRCLE_IMAGE'] = pandas.to_numeric(data_clean['LONGITUDE_CIRCLE_IMAGE'], downcast="float")
data_clean['NUMBER_LAYERS'] = pandas.to_numeric(data_clean['NUMBER_LAYERS'], downcast="integer")


print("analysing data types...")
data_clean.dtypes
data_clean.describe()

print("setting predictors...")
predictors = data_clean[['LATITUDE_CIRCLE_IMAGE', 'LONGITUDE_CIRCLE_IMAGE',
                         'DIAM_CIRCLE_IMAGE', 'NUMBER_LAYERS']]

print("setting target(s)...")
targets = data_clean["DEPTH_RIMFLOOR_TOPOG"]

print("setting test splits...")
pred_train, pred_test, tar_train, tar_test = train_test_split(predictors, targets, test_size=0.4)


print("shaping test splits...")
pred_train.shape
pred_test.shape
tar_train.shape
tar_test.shape

print("setting classifier...")
classifier=DecisionTreeClassifier()
classifier=classifier.fit(pred_train, tar_train)

print("setting up prediction...")
predictions=classifier.predict(pred_test)
print("building model...")
sklearn.metrics.confusion_matrix(tar_test,predictions)

.. 我收到以下错误:

runfile('C:/Users//Documents/Training/IT Nano - 数据 分析师/机器学习/ML(第 1 周).py', wdir='C:/Users//Documents/Training/IT Nano - 数据 分析师/机器学习')读取数据集...清理数据... 分析数据类型...设置预测变量...设置目标... 设置测试拆分...塑造测试拆分...设置分类器... Traceback(最近一次调用最后一次):

文件“C:\Users\Documents\Training\IT Nano - 数据 Analyst\Machine Learning\ML (Week 1).py",第 58 行,在 分类器=分类器.fit(pred_train, tar_train)

文件 "C:\Users\Anaconda3\lib\site-packages\sklearn\tree_classes.py", 第 890 行,合身 超级().fit(

文件 "C:\Users\Anaconda3\lib\site-packages\sklearn\tree_classes.py", 第 181 行,合适 check_classification_targets(y)

文件 "C:\Users\Anaconda3\lib\site-packages\sklearn\utils\multiclass.py", 第 172 行,在 check_classification_targets raise ValueError("未知标签类型:%r" % y_type)

ValueError:未知标签类型:'连续'

【问题讨论】:

    标签: python pandas machine-learning scikit-learn


    【解决方案1】:

    重点是您的目标变量由浮点数组成(您可以在错误回溯中看到标签类型 continuous)。

    ‘连续’:y 是一个类似数组的浮点数,不全是整数,是 1d 或列向量。

    一般分类任务禁止使用continuous 标签类型,如您所见here

    粗略地说,要让它工作,你需要有一个 binary 类型的目标用于二进制分类问题,multiclass/multiclass-multioutput/multilabel-indicator 类型用于多类多标签分类问题。我建议查看here 以了解可能的目标类型。

    【讨论】:

    • 我想我明白了......我需要将火山口深度变量分类为二进制
    • 感谢您的快速回复。我能够解决我的问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    相关资源
    最近更新 更多