数据挖掘——决策分类/回归树(好苹果分类、鸢尾花数据分类、手写数字数据集分类、波士顿房价预测、泰坦尼卡号生存预测)

本文主要是介绍数据挖掘——决策分类/回归树(好苹果分类、鸢尾花数据分类、手写数字数据集分类、波士顿房价预测、泰坦尼卡号生存预测),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

极客时间——数据挖掘——决策树:
在这里插入图片描述


```python
#1、决策树上作业——好苹果的决策树
from sklearn import tree  
import sys 
import os 
import graphviz 
import numpy as np
#创建数据
data=np.array([[1,1],[1,0],[0,1],[0,0]])
target=np.array([1,1,0,0])
clf=tree.DecisionTreeClassifier()
clf=clf.fit(data,target)
dot_data=tree.export_graphviz(clf,out_file=None)
graph=graphviz.Source(dot_data)
print(graph.view())

在这里插入图片描述

#2、基于鸢尾花构造决策分类树
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
#准备数据集
iris=load_iris()
#获取特征集和分类标识
features=iris.data
labels=iris.target
#随机抽取33%的数据集作为测试集,其余为训练集
train_features,test_features,train_labels,test_labels=train_test_split(features,labels,test_size=0.33,random_state=0)
#创建CART分类树
clf=DecisionTreeClassifier(criterion="gini")
#拟合构造CART分类树
clf=clf.fit(train_features,train_labels)
#用CART分类树做预测
test_predict=clf.predict(test_features)
#将预测结果与测试集结果 作对比
score=accuracy_score(test_labels,test_predict)
print("CART分类树准确率%.4lf"%score)
#画CART分类树
dot_data=tree.export_graphviz(clf,out_file=None)
graph=graphviz.Source(dot_data)
print(graph.view())

输出:
CART分类树准确率0.9600
在这里插入图片描述

#3、波士顿房价预测
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score,mean_absolute_error,mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
from sklearn.datasets import load_boston
#准备数据集
boston=load_boston()
#探索数据
print(boston.feature_names)
#获取特征集和房价
features=boston.data 
prices=boston.target
#随机抽取33%的数据作为测试集,其余为训练集;
train_features,test_features,train_price,test_price=train_test_split(features,prices,test_size=0.33)
#创建CART回归树
dtr=DecisionTreeRegressor()
#拟合构造CART回归树
dtr.fit(train_features,train_price)
#预测测试集中的房价
predict_price=dtr.predict(test_features)
#测试集的结果评价 
print("回归树二乘偏差均值:",mean_squared_error(test_price,predict_price))
print("回归树绝对值偏差均值:",mean_absolute_error(test_price,predict_price))dot_data=tree.export_graphviz(dtr,out_file=None)
graph=graphviz.Source(dot_data)
print(graph.view())

输出:
[‘CRIM’ ‘ZN’ ‘INDUS’ ‘CHAS’ ‘NOX’ ‘RM’ ‘AGE’ ‘DIS’ ‘RAD’ ‘TAX’ ‘PTRATIO’
‘B’ ‘LSTAT’]
回归树二乘偏差均值: 41.10365269461077
回归树绝对值偏差均值: 3.7467065868263476
在这里插入图片描述

#4、手写数字数据集——练习题:
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import tree
from sklearn.metrics import accuracy_score
import graphviz 
# 准备手写数字数据集
digits = datasets.load_digits()
# 获取特征和标识
features = digits.data
labels = digits.target
# 选取数据集的33%为测试集,其余为训练集
train_features, test_features, train_labels, test_labels = train_test_split(features, labels, test_size=0.33)
# 创建CART分类树
clf = tree.DecisionTreeClassifier()
# 拟合构造CART分类树
clf.fit(train_features, train_labels)
# 预测测试集结果
test_predict = clf.predict(test_features)
# 测试集结果评价
print('CART分类树准确率:', accuracy_score(test_labels, test_predict))
# 画决策树
dot_data = tree.export_graphviz(clf, out_file=None)
graph = graphviz.Source(dot_data)
graph.render('CART//CART_practice_digits')
print(graph.view())

在这里插入图片描述
so long ……

泰坦尼克号生存预测:

#泰坦尼克号生存预测:
import pandas as pd 
#数据加载
train_data=pd.read_csv("./train.csv")
test_data=pd.read_csv("./test.csv")
#数据探索
print(train_data.info())
print("-"*30)
print(train_data.describe())
print("-"*50)
print(train_data.head())
print("-"*50)
print(train_data.tail())
#数据清洗
#使用平均年龄来填充年龄中的缺失值;数据填充
train_data["Age"].fillna(train_data["Age"].mean(),inplace=True)
test_data["Age"].fillna(test_data["Age"].mean(),inplace=True)
train_data["Embarked"].fillna("S",inplace=True)
test_data["Embarked"].fillna("S",inplace=True)
train_data['Fare'].fillna(train_data['Fare'].mean(), inplace=True)
test_data['Fare'].fillna(test_data['Fare'].mean(),inplace=True)
#特征选择:将Pclass\Sex\Age等作为特征,放到特征向量中features中;features=["Pclass","Sex","Age","SibSp","Parch","Fare","Embarked"]
train_features=train_data[features]
train_labels=train_data["Survived"]
test_features=test_data[features]#特征值中有一些字符串,这样不方便运算,需要转换成数值类型,例如性别变成0、1abs等;
#使用DictVectorizer类可以处理符号化对象;
from sklearn.feature_extraction import DictVectorizer
dvec=DictVectorizer(sparse=False)
train_features=dvec.fit_transform(train_features.to_dict(orient="record"))#他将特征向量化转换为特征值矩阵
print (dvec.feature_names_)
#决策树模型
from sklearn.tree import DecisionTreeClassifier#构造ID3决策树
clf=DecisionTreeClassifier(criterion="entropy")
#决策树训练
clf.fit(train_features,train_labels)
test_features=dvec.transform(test_features.to_dict(orient="record"))
#决策树预测
predict_labels=clf.predict(test_features)
#得到决策树准确率:
acc_decision_tree=round(clf.score(train_features,train_labels))
print(u"score准确率为%.4lf"%acc_decision_tree)import numpy as np
from sklearn.model_selection import cross_val_score
# 使用K折交叉验证 统计决策树准确率
print(u'cross_val_score准确率为 %.4lf' % np.mean(cross_val_score(clf, train_features, train_labels, cv=10)))
#可视化:
from sklearn import tree
import graphviz dot_data=tree.export_graphviz(clf,out_file=None)
graph=graphviz.Source(dot_data)
print(graph.view())
输出:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId    891 non-null int64
Survived       891 non-null int64
Pclass         891 non-null int64
Name           891 non-null object
Sex            891 non-null object
Age            714 non-null float64
SibSp          891 non-null int64
Parch          891 non-null int64
Ticket         891 non-null object
Fare           891 non-null float64
Cabin          204 non-null object
Embarked       889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KB
None
------------------------------PassengerId    Survived      Pclass         Age       SibSp  \
count   891.000000  891.000000  891.000000  714.000000  891.000000   
mean    446.000000    0.383838    2.308642   29.699118    0.523008   
std     257.353842    0.486592    0.836071   14.526497    1.102743   
min       1.000000    0.000000    1.000000    0.420000    0.000000   
25%     223.500000    0.000000    2.000000   20.125000    0.000000   
50%     446.000000    0.000000    3.000000   28.000000    0.000000   
75%     668.500000    1.000000    3.000000   38.000000    1.000000   
max     891.000000    1.000000    3.000000   80.000000    8.000000   Parch        Fare  
count  891.000000  891.000000  
mean     0.381594   32.204208  
std      0.806057   49.693429  
min      0.000000    0.000000  
25%      0.000000    7.910400  
50%      0.000000   14.454200  
75%      0.000000   31.000000  
max      6.000000  512.329200  
--------------------------------------------------PassengerId  Survived  Pclass  \
0            1         0       3   
1            2         1       1   
2            3         1       3   
3            4         1       1   
4            5         0       3   Name     Sex   Age  SibSp  \
0                            Braund, Mr. Owen Harris    male  22.0      1   
1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   
2                             Heikkinen, Miss. Laina  female  26.0      0   
3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   
4                           Allen, Mr. William Henry    male  35.0      0   Parch            Ticket     Fare Cabin Embarked  
0      0         A/5 21171   7.2500   NaN        S  
1      0          PC 17599  71.2833   C85        C  
2      0  STON/O2. 3101282   7.9250   NaN        S  
3      0            113803  53.1000  C123        S  
4      0            373450   8.0500   NaN        S  
--------------------------------------------------PassengerId  Survived  Pclass                                      Name  \
886          887         0       2                     Montvila, Rev. Juozas   
887          888         1       1              Graham, Miss. Margaret Edith   
888          889         0       3  Johnston, Miss. Catherine Helen "Carrie"   
889          890         1       1                     Behr, Mr. Karl Howell   
890          891         0       3                       Dooley, Mr. Patrick   Sex   Age  SibSp  Parch      Ticket   Fare Cabin Embarked  
886    male  27.0      0      0      211536  13.00   NaN        S  
887  female  19.0      0      0      112053  30.00   B42        S  
888  female   NaN      1      2  W./C. 6607  23.45   NaN        S  
889    male  26.0      0      0      111369  30.00  C148        C  
890    male  32.0      0      0      370376   7.75   NaN        Q  
['Age', 'Embarked=C', 'Embarked=Q', 'Embarked=S', 'Fare', 'Parch', 'Pclass', 'Sex=female', 'Sex=male', 'SibSp']
score准确率为1.0000
cross_val_score准确率为 0.7768

在这里插入图片描述

这篇关于数据挖掘——决策分类/回归树(好苹果分类、鸢尾花数据分类、手写数字数据集分类、波士顿房价预测、泰坦尼卡号生存预测)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/426037

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi