网站模板套用,顺德网页定制,甘肃肃第八建设集团网站1,网页工具栏目录
1.算法流程简介
2.算法核心代码
3.算法效果展示 1.算法流程简介 决策树的应用:对泰坦尼克号数据集成员进行预测生死
算法流程还是比较简单的,简单学习一下决策树跟着注释写即可
文章参考:https://zhuanlan.zhihu.com/p/133838427
算法种遇上sklear…目录
1.算法流程简介
2.算法核心代码
3.算法效果展示 1.算法流程简介 决策树的应用:对泰坦尼克号数据集成员进行预测生死
算法流程还是比较简单的,简单学习一下决策树跟着注释写即可
文章参考:https://zhuanlan.zhihu.com/p/133838427
算法种遇上sklearn的函数还是比较多的,请将sklearn函数更新到最新
更新代码如下所示:
pip install --upgrade sklearn2.算法核心代码
#首先导入需要的包
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn.feature_extraction import DictVectorizer
import pandas as pdtitan pd.read_csv(rC:\Users\Zeng Zhong Yan\Desktop\train.csv)
# 处理数据找出特征值和目标值
x titan[[Pclass, Age, Sex]]
y titan[Survived]
print(x)
# 缺失值处理
x[Age].fillna(x[Age].mean(), inplaceTrue)
# 分割数据集到训练集和测试集
x_train, x_test, y_train, y_test train_test_split(x, y, test_size0.25)
# 进行处理(特征工程)
dict DictVectorizer(sparseFalse)
x_train dict.fit_transform(x_train.to_dict(orientrecords))
dict DictVectorizer(sparseFalse)
x_test dict.fit_transform(x_test.to_dict(orientrecords))
print(dict.get_feature_names_out())
#X_test vec.fit_transform(X_features)
print(x_train)
# 用决策树进行预测
dec DecisionTreeClassifier()
dec.fit(x_train, y_train)
# 预测准确率
print(预测的准确率为, dec.score(x_test, y_test))
# 导出决策树的结构
export_graphviz(dec, out_filerC:\Users\Zeng Zhong Yan\Desktop\py.vs\.vscode\数学建模\decision_tree.dot, feature_names[Age, Pclass, Sexfemale, Sexmale])
算法最终取得的预测正确率:0.78-0.84左右
整体上来看波动还是比较大的
可能是我的数据集不够多,只有800来个,如果用真正的titanic数据集的话,大概会稳定在0.79-0.82之间
3.算法BUG解决 由于现在各种函数库更新比较快,所以有的时候一个看似正常的函数会一直报错.
这个可能与你的库的版本有关,过高或者过低了,没能正确匹配上,我的建议是统一升级到最新版本1.bug1:AttributeError: DictVectorizer object has no attribute feature_names_out
这个就是典型的版本不符合的问题.
我们需要做以下更改:
#老版本代码
dict DictVectorizer(sparseFalse)
x_test dict.transform(x_test.to_dict(orientrecords))
print(dict.feature_names_out())
#新版本代码
dict DictVectorizer(sparseFalse)
x_test dict.fit_transform(x_test.to_dict(orientrecords))
print(dict.get_feature_names_out())
#改完就不会报AttributeError: DictVectorizer object has no attribute feature_names_out2.bug2:ValueError: Length of feature_names, 4 does not match number of features, 6
#老版本代码:
export_graphviz(dec, out_filerC:\Users\Zeng Zhong Yan\Desktop\py.vs\.vscode\数学建模\decision_tree.dot, feature_names[age, pclass1st, pclass2nd, pclass3rd, sexfemale, sexmale])
#新版本代码:
export_graphviz(dec, out_filerC:\Users\Zeng Zhong Yan\Desktop\py.vs\.vscode\数学建模\decision_tree.dot, feature_names[Age, Pclass, Sexfemale, Sexmale])
#解释:因为你原先报错提示你只有4个长度,却要容下6个特征类,这显然是不对的,但是我们发现Pclass1st/2nd/3rd本质上就属于Pclass,所以就简化成4个特征维度了