Python 在我的决策树模型上获得100%的准确性

Python 在我的决策树模型上获得100%的准确性,python,pandas,machine-learning,scikit-learn,decision-tree,Python,Pandas,Machine Learning,Scikit Learn,Decision Tree,这是我的代码,不管测试大小有多大,它总是返回100%的准确度。我使用了train_test_split方法,因此我认为不应该有任何重复的数据。有人能检查一下我的代码吗 from sklearn.tree import DecisionTreeClassifier import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score d

这是我的代码,不管测试大小有多大,它总是返回100%的准确度。我使用了train_test_split方法,因此我认为不应该有任何重复的数据。有人能检查一下我的代码吗

from sklearn.tree import DecisionTreeClassifier
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score


data = pd.read_csv('housing.csv')

prices = data['median_house_value']
features = data.drop(['median_house_value', 'ocean_proximity'], axis = 1)

prices.shape
(20640,)

features.shape
(20640, 8)


X_train, X_test, y_train, y_test = train_test_split(features, prices, test_size=0.2, random_state=42)

X_train = X_train.dropna()
y_train = y_train.dropna()
X_test = X_test.dropna()
y_test = X_test.dropna()

model = DecisionTreeClassifier()
model.fit(X_train, y_train)

y_train.shape
(16512,)

X_train.shape
(16512, 8)


predictions = model.predict(X_test)
score = model.score(y_test, predictions)
score 

编辑:发现多个问题后,我重新修改了答案。请复制粘贴下面的代码,以确保没有留下错误

问题-

  • 对于回归问题,您使用的是
    DecisionTreeClassifier
    而不是
    DecisionTreeRegressor
  • 在执行测试序列分割后,您将删除
    nans
    ,这将扰乱样本计数。在拆分之前执行
    data.dropna()
  • 您使用的是
    模型。分数(X\u测试,y\u测试)
    不正确,通过了
    (X\u测试,预测)
    。请使用
    accurity\u score(X\u测试,预测)
    替换这些参数,或者修复语法

  • 来自sklearn.tree import DecisionTreeRegressor#您所说的“不管测试大小有多大”是什么意思?我怀疑,如果你将测试大小设置为数据的90%,那么该模型仍能提供100%的准确性。此外,在一个简单的数据集上获得100%的准确率并不是什么大问题。我关心的是,为什么要使用
    决策树分类器
    而不是
    决策树回归器
    进行房价分类。也许这就是你的答案。为什么
    DecisionTreeClassifier()
    ?这不是回归问题吗?请注意,这不是过度拟合。过度拟合是指训练精度相当高,但验证精度相对较低的情况。这表明你的模型非常适合你的训练数据,但不能概括看不见的数据。这仍然返回100%的准确度。你能将测试数据大小更改为0.9并告诉我发生了什么吗?它仍然返回0.9测试数据的100%准确度。别介意我发现了你的问题。请检查model.score语句。你用错了。查看我的最新评论。让我知道它是否修复了它。它返回ValueError:y_true和y_pred的输出数不同(8!=1)
    from sklearn.tree import DecisionTreeRegressor #<---- FIRST ISSUE
    import numpy as np
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import accuracy_score
    
    
    data = pd.read_csv('housing.csv')
    
    data = data.dropna() #<--- SECOND ISSUE
    
    prices = data['median_house_value']
    features = data.drop(['median_house_value', 'ocean_proximity'], axis = 1)
    
    X_train, X_test, y_train, y_test = train_test_split(features, prices, test_size=0.2, random_state=42)
    
    model = DecisionTreeRegressor()
    model.fit(X_train, y_train)
    
    predictions = model.predict(X_test)
    score = accuracy_score(y_test, predictions) #<----- THIRD ISSUE
    score