机器学习Sklearn实战——决策树算法
sklearn-str类型数据量化操作
OrdinalEncoder
import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import OrdinalEncoder,OneHotEncoder,LabelEncodersalary = pd.read_csv("/Users/zhucan/Desktop/salary.txt")
salary.drop(labels=["final_weight","education_num","capital_gain","capital_loss"],axis = 1,inplace=True)
ordinalEncoder = OrdinalEncoder()
data = ordinalEncoder.fit_transform(salary)
u = salary["education"].unique()
u
array(['Bachelors', 'HS-grad', '11th', 'Masters', '9th', 'Some-college','Assoc-acdm', 'Assoc-voc', '7th-8th', 'Doctorate', 'Prof-school','5th-6th', '10th', '1st-4th', 'Preschool', '12th'], dtype=object)
u.sort()
u
array(['10th', '11th', '12th', '1st-4th', '5th-6th', '7th-8th', '9th','Assoc-acdm', 'Assoc-voc', 'Bachelors', 'Doctorate', 'HS-grad','Masters', 'Preschool', 'Prof-school', 'Some-college'],dtype=object)
salary_ordinal = pd.DataFrame(data,columns=salary.columns)
salary_ordinal.head()
LabelEncoder
import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import OrdinalEncoder,OneHotEncoder,LabelEncodersalary = pd.read_csv("/Users/zhucan/Desktop/salary.txt")
salary.drop(labels=["final_weight","education_num","capital_gain","capital_loss"],axis = 1,inplace=True)
labelEncode = LabelEncoder()
salary_label = labelEncode.fit_transform(salary["education"]) #一列转换for col in salary.columns:salary[col] = labelEncode.fit_transform(salary[col])
salary
OnehotEncoder
import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import OrdinalEncoder,OneHotEncoder,LabelEncodersalary = pd.read_csv("/Users/zhucan/Desktop/salary.txt")
salary.drop(labels=["final_weight","education_num","capital_gain","capital_loss"],axis = 1,inplace=True)
edu = salary[["education"]]
onehotEncoder = OneHotEncoder()
onehot = onehotEncoder.fit_transform(edu)
# one-hot
onehot.toarray()[:10] #一共16列
nd1.argmax(axis = 1)
array([ 9, 9, 11, 1, 9, 12, 6, 11, 12, 9])
np.sort(edu.education.unique())
array(['10th', '11th', '12th', '1st-4th', '5th-6th', '7th-8th', '9th','Assoc-acdm', 'Assoc-voc', 'Bachelors', 'Doctorate', 'HS-grad','Masters', 'Preschool', 'Prof-school', 'Some-college'],dtype=object)
决策树的熵原理
熵或者基尼系数分裂
ID3——信息增益
C4.5——可以使用连续数据作为特征值
C5.0——准确率更高了
CART——和C4.5相似,但是支持回归
决策树的使用
from sklearn import datasets
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn import tree
iris = datasets.load_iris()
X = iris["data"]
y = iris["target"]
feature_names = iris.feature_names
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=1024)
clf = DecisionTreeClassifier(criterion="entropy")
clf.fit(X_train,y_train)
y_ = clf.predict(X_test)
print(accuracy_score(y_test,y_))
plt.figure(figsize=(12,9),dpi=80)
tree.plot_tree(clf,filled = True,feature_names = feature_names)
39/120*np.log2(120/39)+42/120*np.log2(120/42)+39/120*np.log2(120/39)
1.5840680553754911
决策树属性列分时计算
为什么一开始依靠petal_length<=2.6区分?
X_train.std(axis = 0)
array([0.82300095, 0.42470578, 1.74587112, 0.75016619])
第三列波动大选第三列
np.sort(X_train[:,2])
array([1. , 1.1, 1.2, 1.2, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.4, 1.4, 1.4,1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5,1.5, 1.5, 1.5, 1.5, 1.5, 1.6, 1.6, 1.6, 1.7, 1.7, 1.7, 1.7, 1.9,3.3, 3.5, 3.5, 3.6, 3.7, 3.8, 3.9, 3.9, 3.9, 4. , 4. , 4. , 4. ,4.1, 4.1, 4.1, 4.2, 4.2, 4.2, 4.2, 4.3, 4.4, 4.4, 4.4, 4.5, 4.5,4.5, 4.5, 4.5, 4.5, 4.5, 4.6, 4.6, 4.6, 4.7, 4.7, 4.7, 4.7, 4.8,4.8, 4.8, 4.8, 4.9, 4.9, 4.9, 5. , 5. , 5. , 5.1, 5.1, 5.1, 5.1,5.1, 5.1, 5.1, 5.2, 5.2, 5.3, 5.3, 5.4, 5.4, 5.5, 5.5, 5.5, 5.6,5.6, 5.6, 5.7, 5.8, 5.9, 5.9, 6. , 6. , 6.1, 6.1, 6.1, 6.3, 6.4,6.7, 6.7, 6.9])
(1.9+3.3)/2=2.6
X_train[y_train != 0].std(axis = 0)
array([0.66470906, 0.32769349, 0.80409522, 0.4143847 ])
X_train2 = X_train[y_train != 0]
np.sort(X_train2[:,3])
array([1. , 1. , 1. , 1. , 1. , 1. , 1.1, 1.1, 1.2, 1.2, 1.2, 1.2, 1.2,1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.4, 1.4, 1.4,1.4, 1.4, 1.4, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5,1.6, 1.6, 1.6, 1.6, 1.7, 1.7, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8,1.8, 1.8, 1.9, 1.9, 1.9, 1.9, 1.9, 2. , 2. , 2. , 2. , 2. , 2.1,2.1, 2.1, 2.1, 2.2, 2.2, 2.3, 2.3, 2.3, 2.3, 2.3, 2.3, 2.3, 2.3,2.4, 2.5, 2.5])
X_train2 = X_train[y_train != 0]
y_train2 = y_train[y_train!=0]index = np.argsort(X_train2[:,3])
display(X_train[:,1][index])
y_train2[index]
array([3. , 3.2, 3.2, 3.1, 3.5, 3.1, 3.7, 3. , 2.6, 3.6, 2.9, 3.8, 2.6,3.4, 2.9, 2.8, 3.3, 3.1, 2.9, 2.8, 3.4, 3. , 3. , 2.4, 2.2, 3. ,3.2, 3. , 3.1, 2.9, 3. , 2.9, 3.2, 3.4, 3.2, 2. , 3. , 2.5, 2.8,3.3, 2.7, 2.9, 3.2, 2.7, 2.4, 3. , 3.5, 3.2, 2.8, 3. , 4. , 2.5,3.8, 2.8, 2.7, 2.2, 3.7, 2.4, 2.7, 3.1, 2.8, 2.7, 2.8, 2.2, 3.6,3.8, 3.3, 3.2, 3. , 3.8, 3. , 3. , 3.1, 3. , 2.8, 3.9, 2.8, 2.8,3.2, 2.8, 3.4])
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2,1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
属性
决策树gini系数
决策树进行数据处理的时候不需要对数据进行去量纲化,规划化,标准化
随机森林原理
100个原始样本,抽取样本可重复0,0,0,2,3,4......
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier,ExtraTreesClassifier
from sklearn import datasets
import pandas as pd
from sklearn.model_selection import train_test_split
wine =datasets.load_wine()
X = wine["data"]
y = wine["target"]
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2)
clf = RandomForestClassifier()
clf.fit(X_train,y_train)
y_ = clf.predict(X_test)
from sklearn.metrics import accuracy_score
accuracy_score(y_test,y_)
1.0
机器学习Sklearn实战——决策树算法相关推荐
- 机器学习实验:使用sklearn的决策树算法对葡萄酒数据集进行分类
机器学习实验:使用sklearn的决策树算法对葡萄酒数据集进行分类 问题如下: 使用sklearn的决策树算法对葡萄酒数据集进行分类,要求: ①划分训练集和测试集(测试集占20%) ②对测试集的预测类 ...
- 菜菜的机器学习sklearn实战-----sklearn入门与决策树
菜菜的机器学习sklearn实战-----sklearn入门与决策树 菜菜的机器学习sklearn实战-----sklearn入门与决策树 sklearn入门 决策树 概述 决策树是如何工作的 skl ...
- svd降维 python案例_菜菜的机器学习sklearn实战-----sklearn中的降维算法PCA和SVD
菜菜的机器学习sklearn实战-----sklearn中的降维算法PCA和SVD 概述 从什么叫维度说开来 简单讲,shape中返回了几个数字就是几维. 一张表最多就是一维 当一个数组中存在2张3行 ...
- 机器学习实战--决策树算法
决策树 决策树(decision tree)是一种基本的分类与回归方法.从判断模块引出的左右箭头称为分支,它可以达到另外一个判断模块或者终止模块.分类决策树模型是一种描述对实例进行分类的树形结构.决策 ...
- 机器学习实战-决策树算法
本篇决策树算法是依据ID3算法来的,所以在看之间建议先了解ID3算法:https://blog.csdn.net/qq_27396861/article/details/88226296 文章目录 一 ...
- 从零开始学习机器学习五:决策树算法特征工程
决策树&特征工程 目标 1 简介 1.1 认识决策树 2 分类原理 2.1 熵 2.2 决策树的划分依据一-信息增益 2.3 决策树的划分依据二-信息增益率 2.4 决策树的划分依据三-基尼值 ...
- 机器学习算法之决策树算法
决策树 综述 决策树(Decision Tree)算法是一种基本的分类与回归方法,根据数据的属性采用树状结构建立决策模型.决策树模型常常用来解决分类和回归问题.常见的算法包括CART(Classifi ...
- 机器学习故事汇-决策树算法
机器学习故事汇-决策树 [咱们的目标]系列算法讲解旨在用最简单易懂的故事情节帮助大家掌握晦涩无趣的机器学习,适合对数学很头疼的同学们,小板凳走起! 决策树模型是机器学习中最经典的算法之一啦,用途之广泛 ...
- Python机器学习--分类\回归--决策树算法
决策树算法类型 决策树是一系列算法,而不是一个算法. 决策树包含了 ID3分类算法,C4.5分类算法,Cart分类树算法,Cart回归树算法. 决策树既可以做分类算法,也可以做回归算法.因此决策树既可 ...
最新文章
- 数字图像处理中常用的插值方法
- 化工原理(过滤和沉淀)
- oenwrt 进不了bios_win7进不了bios原因及解决办法
- PHP 依赖注入,从此不再考虑加载顺序
- Nginx跨域问题的原因分析
- python算法题-汉诺塔问题递归解法(python实现)
- “美登杯”上海市高校大学生程序设计邀请赛 **D. 小花梨的取石子游戏**
- centos 6.5/redhat 6.5 网卡配置有问题
- 最大隶属度原则_商圈广告精准投放,请牢记这四大黄金原则!
- python多项式求导_Python求离散序列导数的示例
- PostgreSQL rocks, except when it blocks: Understanding locks
- 上周热点回顾(11.27-12.3)
- 如何监听事件里发生的错误_Swing 如何进行事件监听
- Java 字符串长度不足,后面补0
- 一文带你了解云原生安全 | 云安全解决方案(CASB、CSPM、CWPP、CNAPP)
- echart-pie
- WordPress主题_大前端DUX主题7.1原版+优化-91apps.cn就要应用网
- 7款必须下载的PC端软件,必看
- 【ORACLE数据库体系架构】
- windows server 2016磁盘安全与管理_磁盘管理工具哪一款好用?
热门文章
- soap php 分开类,PHP SoapClient类型映射的行为有所不同
- 反向传播算法_9.3 反向传播算法的直观理解 Backpropagation Intuition
- eclipse配置mysql教程_在Eclipse连接mysql-----配置jbdc_MySQL
- html底部导航_松鼠导航 | 优质资源网站荟萃
- java SSM框架
- html tr中可以有br吗,html table tr td br 什么意思 缩写
- flume java_Flume的安装及简单的使用(一)
- 双linux grub rescue,Grub Rescue修复方法
- Ubuntu20.04软件源更换
- python date time