sklearn学习中的小知识点

本文详细介绍了决策树的基本概念,包括熵和基尼系数作为不纯度度量标准,以及如何通过交叉验证评估模型性能。讨论了决策树的剪枝策略,如最大深度、样本叶节点数和权重阈值。此外,还展示了如何绘制随机森林中单棵决策树,并探讨了特征重要性。最后,提到了数据预处理中的降维方法和缺失值处理策略。
摘要由CSDN通过智能技术生成

将得到的训练集以表的形式展现
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一一对应展示

决策树的剪枝策略:

  1. max_depth:限制最大深度
  2. min_samples_leaf & min_samples_split
  3. class_weight:对样本标签进行均衡,给与少量样本更大的权重(eg判断信用卡用户是否会违约,假设有1:99,那么模型什么都不做,全猜否也有99%的准确率)
  4. 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()

增维方法

  1. 数组.reshape(-1,1)
  2. 数组[:,np.newaxis] 将长度为4得到数组变成四行一列(4,1)
  3. 数组[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(开始,结束,数量)

取值范围内随机取要求数目个数字,结束数字可以取到

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值