为什么我的决策树 ML 算法训练变得完美?
Why am I getting perfect on my decision tree ML algorithm training?
我是第一次测试决策树,我的算法性能得到了满分。这没有意义,因为我使用的数据集是一堆不同变量的 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
随机化,但我很确定,这同样会扭曲两个数据帧的结果,因此与我现在所做的没有区别。否则,我可以单独随机化数据集,但我认为这会扰乱模型训练或评分,因为测试数据不会与正确的数据相关联?我不太确定。
很可能你的模型过拟合了。我认为您没有将数据集分成两部分:一部分用于训练,另一部分用于测试。测试数据将帮助您了解您的模型是过拟合还是欠拟合。
更多信息:
我是第一次测试决策树,我的算法性能得到了满分。这没有意义,因为我使用的数据集是一堆不同变量的 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
随机化,但我很确定,这同样会扭曲两个数据帧的结果,因此与我现在所做的没有区别。否则,我可以单独随机化数据集,但我认为这会扰乱模型训练或评分,因为测试数据不会与正确的数据相关联?我不太确定。
很可能你的模型过拟合了。我认为您没有将数据集分成两部分:一部分用于训练,另一部分用于测试。测试数据将帮助您了解您的模型是过拟合还是欠拟合。
更多信息: