将得到的训练集以表的形式展现
pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1)
查看训练集的特征名称,标签名称
datasets.feature_names
datasets.target_names
决策树DecisionTreeClassfier的参数
Criterion用来决定不纯度的计算方法
① entropy:信息熵 条件概率×条件概率的对数 再累加取其相反数
② gini:基尼系数 1减去条件概率平方的累加和
score返回预测的精确度
clf=tree.DecisionTreeClassifier(criterion="entropy")
clf=clf.fit(Xtrain,Ytrain)
score=clf.score(Xtest,Ytest)
画随机森林的决策树
import graphviz
dot_data=tree.export_graphviz(model,out_file=None
,feature_names=feature_name
,class_names=[1,2,3]
,filled=True #结点底色 默认False
,rounded=True #节点边框 默认False
graph=graphviz.Source(dot_data)
graph
model.feature_importtances_:显示所有特征的重要程度,0-1之间
[*zip(list1,list2)] :list1,list2一一对应展示
决策树的剪枝策略:
- max_depth:限制最大深度
- min_samples_leaf & min_samples_split
- class_weight:对样本标签进行均衡,给与少量样本更大的权重(eg判断信用卡用户是否会违约,假设有1:99,那么模型什么都不做,全猜否也有99%的准确率)
- min_weight_fraction_leaf:有权重版本的min_samples_leaf
交叉验证(cross_val_score):
from sklearn.datasets import load_boston
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeRegressor
boston=load_boston()
regressor=DecisionTreeRegressor(random_state=10)
cross_val_score(regressor,boston.data,boston.target,cv=10,
scoring="neg_mean_squared_error")
降维函数 ravel()
增维方法
- 数组.reshape(-1,1)
- 数组[:,np.newaxis] 将长度为4得到数组变成四行一列(4,1)
- 数组[np.newaxis,:] 将长度为4得到数组变成一行四列(1,4)
np.arange(开始点,结束点,步长)
不包含结束点
删除表格的行列
data.drop([“Cabin”,“Ticket”,“Name”],axis=1,inplace=True)
用均值填补缺失值
data[“Age”]=data[“Age”].fillna(data[“Age”].mean())
删除有缺失值的行
data=data.dropna() 只要这个行有一个缺失值,就删除掉整行
查看一列有多少种取值
data[“Embarked”].unique()
将多分类变量转化为数值型变量
labels=data[“Embarked”].unique().tolist()
data[“Embarked”]=data[“Embarked”].apply(lambda x:labels.index(x))
将二分类变量转化为数值型变量
data[“Sex”]=(data[“Sex”]==“male”).astype(“int”)
恢复索引
Xtrain.index=range(Xtrain.shape[0])
修改横坐标标尺
plt.xticks(range(1,11))
网格搜索:同时调整多个参数 枚举技术
import numpy as np
from sklearn.model_selection import GridSearchCV
gini_thresholds=np.linspace(0,0.5,50)
# 一串参数以及我们希望网格搜索来搜索参数的取值范围
parameters={
"criterion":("gini","entropy")
,"splitter":("best","random")
,"max_depth":[*range(1,10)]
,"min_samples_leaf":[*range(1,50,5)]
,"min_impurity_decrease":np.linspace(0,0.5,50)
}
clf=DecisionTreeClassifier(random_state=10)
GS=GridSearchCV(clf,parameters,cv=10)
GS=GS.fit(Xtrain,Ytrain)
GS.best_params_#返回最佳参数取值组合
GS.best_score_
np.linspace(开始,结束,数量)
取值范围内随机取要求数目个数字,结束数字可以取到