python的实验报告参考文献 python参考文献有哪些( 三 )


plt.figure(figsize=(10,8))sns.countplot(wine_df['quality']);wine_df['quality'] = wine_df['quality'].replace(8,7)wine_df['quality'] = wine_df['quality'].replace(3,5)wine_df['quality'] = wine_df['quality'].replace(4,5)wine_df['quality'].value_counts(normalize=True)将数据分为训练集和测试集,以检查模型的准确性,并查找是否存在过拟合或欠拟合 。
# 将数据分解为训练集和测试集from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test =train_test_split(wine_df.drop('quality',axis=1), wine_df['quality'], test_size=.3, random_state=22)X_train.shape,X_test.shape利用基尼准则建立了决策树模型 。请注意,为了简单起见,我们将树剪枝到最大深度3 。这将有助于我们将树可视化,并将其与我们在初始部分中讨论的概念联系起来 。
clf_pruned = DecisionTreeClassifier(criterion = "gini", random_state = 100,max_depth=3, min_samples_leaf=5)clf_pruned.fit(X_train, y_train)请注意,可以调整以下参数以改进模型输出(Scikit Learn,2019) 。
criterion — 使用的度量,例如基尼不纯度class_weight — None,代表所有类权重为1max_depth — 3; 剪枝 。当“None”表示节点将展开,直到所有叶子都是同构的max_features — None; 在决定节点的分割时,要考虑所有的特征或自变量max_leaf_nodes — None;min_impurity_decrease — 0.0; 只有当分割确保不纯度的减少大于或等于零时,节点才被分割min_impurity_split — None;min_samples_leaf — 1;一个叶子存在所需的最小样本数min_samples_split — 2; 如果min_samples_leaf =1,则表示右节点和左节点应该各有一个样本,即父节点或根节点应该至少有两个样本splitter — ‘best’; 用于在每个节点选择分割的策略 。最好确保在决定分割时考虑到所有的特征from sklearn.tree import export_graphvizfrom sklearn.externals.six import StringIOfrom IPython.display import Imageimport pydotplusimport graphvizxvar = wine_df.drop('quality', axis=1)feature_cols = xvar.columnsdot_data = https://www.520longzhigu.com/diannao/StringIO()export_graphviz(clf_pruned, out_file=dot_data,filled=True, rounded=True,special_characters=True,feature_names = feature_cols,class_names=['0','1','2'])from pydot import graph_from_dot_data(graph, ) = graph_from_dot_data(dot_data.getvalue())Image(graph.create_png())preds_pruned = clf_pruned.predict(X_test)preds_pruned_train = clf_pruned.predict(X_train)print(accuracy_score(y_test,preds_pruned))print(accuracy_score(y_train,preds_pruned_train))模型对训练数据和测试数据的准确度得分分别为0.60和0.62 。
特征重要性是指一类将分数分配给预测模型的输入特征的技术,该技术指示在进行预测时每个特征的相对重要性 。
## 计算特征重要性feat_importance = clf_pruned.tree_.compute_feature_importances(normalize=False)feat_imp_dict = dict(zip(feature_cols, clf_pruned.feature_importances_))feat_imp = pd.DataFrame.from_dict(feat_imp_dict, orient='index')feat_imp.rename(columns = {0:'FeatureImportance'}, inplace = True)feat_imp.sort_values(by=['FeatureImportance'], ascending=False).head()DecisionTreeClassifier()提供诸如min_samples_leaf和max_depth等参数,以防止树过度拟合 。
可以看成是如下场景,在这个场景中,我们明确定义树的深度和最大叶子数 。然而,最大的挑战是如何确定一棵树应该包含的最佳深度和叶子 。
在上面的例子中,我们使用max_depth=3,min_samples_leaf=5 。这些数字只是用来观察树的行为的示例图 。但是,如果在现实中,我们被要求研究这个模型并为模型参数找到一个最佳值,这是一个挑战,但并非不可能(决策树模型可以使用GridSearchCV算法进行微调) 。
另一种方法是使用成本复杂性剪枝(CCP) 。
成本复杂性剪枝为控制树的大小提供了另一种选择 。在DecisionTreeClassifier中,这种剪枝技术是由代价复杂性参数ccp_alpha来参数化的 。ccp_alpha值越大,剪枝的节点数就越多 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: