决策树模型的准确性较低

问题描述 投票:0回答:1

我正在制作决策树模型来预测歌曲的情绪。我的数据集包含有关歌曲音频特征(例如速度,响度,舞蹈性等)的信息,并且目标列表示歌曲的情绪。这是我的数据集的第一行:

4,0.339,0.864,2,-2.984,1,0.0441,0.02,0.000129,0.0995,0.576,151.988

第一列代表情绪。由于数据不在特定范围内,因此我对其进行了归一化,然后对决策树进行了其他操作这是最终代码:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import tree
from sklearn.metrics import accuracy_score
from sklearn import preprocessing
df = pd.read_csv('final_data.csv')
x=df.values
min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(x)
df = pd.DataFrame(x_scaled)
col = list(df.columns)[0]
lab_enc = preprocessing.LabelEncoder()
encoded = lab_enc.fit_transform(df[col])
df[col] = encoded
X = df.drop(col,axis=1)
y = df[col]
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42)
model = tree.DecisionTreeClassifier()
model.fit(X_train,y_train)
y_predict=model.predict(X_test)
print(accuracy_score(y_test,y_predict))

但是我的准确率只有36-38%。为什么会这样?该数据集包含每种情绪的大约500个示例。

在制作数据集时我做错什么了吗,还是这个错误有其他来源?另外,是否有更好的方法可以按心情对歌曲进行分类?

python python-3.x machine-learning scikit-learn decision-tree
1个回答
0
投票

我认为DecisionTreeClassifier在这里不是最好的模型。决策树只能预测训练集中的目标,因此DecisionTreeClassifier更适合二进制预测。

[如果您要预测连续变量,请从sklearn.linear_model开始,如果仍无法解决,请尝试使用xgboost lightgbmcatboost之类的渐变增强

© www.soinside.com 2019 - 2024. All rights reserved.