python - 我如何解释我的 knn 和决策树的结果?
问题描述
关于我的目标的详细信息:我正在使用 IMDb 数据和 Youtube 电影预告片数据来预测电影的总票房。具体来说,我使用'range'、'gross'、'budget'、'imdb_score'、'views'、'rating'进行分类。
因此,我运行了 KNN 和决策树 1) 来预测电影的成功,以及 2) 知道哪种机器学习会更准确。
但问题是,我的 knn 结果是
feature_columns = ['range', 'gross', 'budget','imdb_score','views','rating']
X = df2[feature_columns].values
y = df2['range'].values
knn = KNeighborsClassifier(n_neighbors=3, metric='euclidean')
knn.fit(X_train, y_train)
confusion_matrix(y_test, y_pred)
最终我们模型的准确度等于 94.0 %。和
array([[ 4, 0, 0, 0],
[ 0, 27, 0, 0],
[ 0, 1, 20, 0],
[ 0, 0, 1, 7]])
对于决策树,
feature_cols = ["budget","imdb_score","views","rating"]
y = df2.range
X = df2[feature_cols]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
clf = DecisionTreeClassifier(criterion="entropy") #Default criterion is gini index, If you want to use gini index just delete criterion
clf = clf.fit(X_train,y_train) #Training
y_pred = clf.predict(X_test) #Make a prediction
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
最终得到准确度:0.48333333333333334
dot_data = StringIO()
export_graphviz(clf, out_file=dot_data,
filled=True, rounded=True,
special_characters=True,feature_names = feature_cols,class_names=["0","1","2","3"]) ##Change class i named 0, and 1 since i only have to class
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_png('house.png') #will saved to your default location. in coolab it is content folder
Image(graph.create_png())
我的问题是,1)我的结果是否反映了我的主题?KNN 准确度为 94% 且决策树为 48% 的事实令人困惑。我认为决策树的准确性会更高。2)我特别不确定我的 KNN 和决策树的列特征是否相同,以反映相同的结果。我的功能是否以不同方式编辑?
感谢您的阅读!
解决方案
在 KNN 中,您也在训练数据中给出目标列范围,因此与决策树相比,模型的准确性非常高。
您错过了决策树训练数据中的粗略特征。所以你不应该比较这两种算法的性能,因为它们有不同的训练数据。再次尝试使用相同的训练数据为两种算法
注意:请说明总和范围的含义
推荐阅读
- docker - 连接到 localhost:5432 被拒绝。检查主机名和端口是否正确以及 postmaster 是否接受 TCP/IP 连接
- javascript - 如何在地图迭代中获取特定的对象键
- python - 如何使用 python-docx 搜索和替换 word 文档中的单词/文本
- java - 如何为 simpleDateFormat 创建正则表达式
- ngrx - 从效果中调用多个动作
- linux - 如何用 sed 命令替换一串特定字符
- firebase - 应用未激活时未调用 fcm onNotification
- javascript - 在 socket.io 中收集套接字返回的结果
- spring - How to use current exchange and queue name of rabbitmq with spring cloud stream rabbitmq
- python-3.x - 使用 Splinter 在网站的 textarea 中填充表格或值列表