【发布时间】:2021-03-06 11:39:48
【问题描述】:
这是我的代码,无论测试规模有多大,它总是返回 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
【问题讨论】:
-
“不管测试规模有多大”是什么意思?我怀疑如果您将测试大小设置为 90% 的数据,该模型仍然会给您 100% 的准确度。此外,在一个简单的数据集上获得 100% 的准确率并不是什么大问题。我关心的是为什么您使用
Decision tree classifier而不是Decision tree regressor进行房价分类。也许这就是你的答案。 -
为什么是
DecisionTreeClassifier()?这不是回归问题吗? -
请注意,这不是过拟合。过度拟合是指您的训练准确度很高但验证准确度相对较低。这表明您的模型非常适合您的训练数据,但不能泛化到看不见的数据。
标签: python pandas machine-learning scikit-learn decision-tree