为什么我的决策树机器学习算法训练越来越完美?

时间:2021-03-02 02:18:08

标签: python scikit-learn decision-tree

我是第一次测试决策树,并且我的算法性能获得了满分。这没有意义,因为我使用的数据集是一系列不同变量的 AAPL 股票价格,显然算法无法完美检测。

CSV:

Date,Open,High,Low,Close,Adj Close,Volume
2010-01-04,10430.6904296875,10604.9697265625,10430.6904296875,10583.9599609375,10583.9599609375,179780000
2010-01-05,10584.5595703125,10584.5595703125,10522.51953125,10572.01953125,10572.01953125,188540000

我认为它可能不起作用的原因是因为我基本上只是在训练模型时输入答案,而当我尝试为模型评分时它只是反刍那些。

代码:

# Data Sorting
df = pd.read_csv('AAPL_test.csv')
df = df.drop('Date', axis=1)
df = df.dropna(axis='rows')
inputs = df.drop('Close', axis='columns')
target = df['Close']

print(inputs.dtypes)
print(target.dtypes)

# Changing dtypes
lab_enc = preprocessing.LabelEncoder()
target_encoded = lab_enc.fit_transform(target)

# Model
model = tree.DecisionTreeClassifier()
model.fit(inputs, target_encoded)

print(f'SCORE = {model.score(inputs, target_encoded)}')

我还考虑过随机化 CSV 文件的顺序,这可能会有所帮助,但我不确定如何做到这一点。我可以将代码顶部的 df 随机化,但我很确定,这会同样扭曲两个数据帧的结果,因此与我现在所做的没有区别。否则,我可以单独随机化数据集,但我认为这会干扰模型训练或评分,因为测试数据不会与正确的数据相关联?我不太确定。

1 个答案:

答案 0 :(得分:2)

很可能你的模型过拟合了。我认为您没有将数据集分成两部分:一个用于训练,另一个用于测试。测试数据将帮助您了解您的模型是过拟合还是欠拟合。

更多信息:

Overfitting

How to Prevent Overfitting