当前位置: 首页 > news >正文

人工智能机器学习——决策树、异常检测、主成分分析(PCA)

一、决策树(Decision Tree)

在这里插入图片描述
决策树:一种对实例进行分类的树形结构,通过多层判断区分目标所属类别

本质:通过多层判断,从训练数据集中归纳出一组分类规则

优点:

  • 计算量小,运算速度快
  • 易于理解,可清晰查看各属性的重要性

缺点:

  • 忽略属性间的相关性
  • 样本类别分布不均匀时,容易影响模型表现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考资料:https://www.cnblogs.com/callyblog/p/9724823.html

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、异常检测(Anomaly Detection)

在这里插入图片描述
在这里插入图片描述

异常检测:根据输入数据,对不符合预期模式的数据进行识别

在这里插入图片描述

概率密度:概率密度函数是一个描述随机变量在某个确定取值点附近的可能性的函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、主成分分析(PCA)

数据降维(Dimensionality Reduction)
在这里插入图片描述

数据降维,是指在某些限定条件下,降低随机变量个数,得到一组“不相关”主变量的过程。

作用:

  • 减少模型分析数据量,提升处理效率,降低计算难度;
  • 实现数据可视化。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

数据降维的实现:主成分分析(PCA)

PCA(principal components analysis):数据降维技术中,应用最最多的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、Python实战准备

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、实战:决策树实现iris数据分类

在这里插入图片描述
在这里插入图片描述

五、决策树实战,使用数据集iris_data.csv

#加载数据
import pandas as pd
import numpy as np
data = pd.read_csv('iris_data.csv')
data.head()

在这里插入图片描述

#赋值x,y
x = data.drop(['target','label'],axis=1)
y = data.loc[:,'label']
print(x.shape,y.shape)

在这里插入图片描述

#创建决策树模型
from sklearn import tree
dc_tree = tree.DecisionTreeClassifier(criterion='entropy',min_samples_leaf=5)
dc_tree.fit(x,y)

在这里插入图片描述

#评估模型表现
y_predict = dc_tree.predict(x)
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y,y_predict)
print(accuracy)

在这里插入图片描述

#可视化模型结构
from matplotlib import pyplot as plt
fig = plt.figure(figsize=(10,10))
tree.plot_tree(dc_tree,filled=True,feature_names=['SepalLength','SepalWidth','PetalLength','PetalWidth'],class_names=['setosa','versicolor','virginica'])

在这里插入图片描述

dc_tree = tree.DecisionTreeClassifier(criterion='entropy',min_samples_leaf=2)
dc_tree.fit(x,y)
fig = plt.figure(figsize=(10,10))
tree.plot_tree(dc_tree,filled=True,feature_names=['SepalLength','SepalWidth','PetalLength','PetalWidth'],class_names=['setosa','versicolor','virginica'])

在这里插入图片描述

六、异常检测实战,使用数据集anomaly_data.csv

#异常检测
import pandas as pd
import numpy as np
data = pd.read_csv('anomaly_data.csv')
data.head()

在这里插入图片描述

from matplotlib import pyplot as plt 
fig3 = plt.figure()
plt.scatter(data.loc[:,'x1'],data.loc[:,'x2'])
plt.title('data')
plt.xlabel('x1')
plt.ylabel('x2')
plt.show()

在这里插入图片描述

#赋值x,y
x1 = data.loc[:,'x1']
x2 = data.loc[:,'x2']
fig4 = plt.figure(figsize=(10,5))
plt.subplot(121)
plt.hist(x1,bins=100)
plt.title('x1 distribution')
plt.xlabel('x1')
plt.ylabel('counts')plt.subplot(122)
plt.hist(x2,bins=100)
plt.title('x2 distribution')
plt.xlabel('x2')
plt.ylabel('counts')
plt.show()

在这里插入图片描述

#计算均值和标准差
x1_mean = x1.mean()#均值
x1_signa = x1.std()#标准差
x2_mean = x2.mean()#均值
x2_signa = x2.std()#标准差
print(x1_mean,x1_signa,x2_mean,x2_signa)

在这里插入图片描述

#计算高斯分布密度函数
from scipy.stats import norm
x1_range = np.linspace(0,20,300)
x1_normal = norm.pdf(x1_range,x1_mean,x1_signa)x2_range = np.linspace(0,20,300)
x2_normal = norm.pdf(x2_range,x2_mean,x2_signa)
fig5 = plt.figure()
plt.subplot(121)
plt.plot(x1_range,x1_normal)
plt.title('normal p(x1)')plt.subplot(122)
plt.plot(x2_range,x2_normal)
plt.title('normal p(x2)')
plt.show()

在这里插入图片描述

#建立模型
from sklearn.covariance import EllipticEnvelope
ad_model = EllipticEnvelope()
ad_model.fit(data)

在这里插入图片描述

#预测数据
y_predict = ad_model.predict(data)
print(y_predict)

在这里插入图片描述

#可视化数据
fig4 = plt.figure()
original_data=plt.scatter(data.loc[:,'x1'],data.loc[:,'x2'],marker='x')
normaly_data=plt.scatter(data.loc[:,'x1'][y_predict==-1],data.loc[:,'x2'][y_predict==-1],marker='o',facecolor='none',edgecolor='red',s=120)
plt.title('data')
plt.xlabel('x1')
plt.ylabel('x2')
plt.legend((original_data,normaly_data),('original_data','normaly_data'))
plt.show()

在这里插入图片描述

#修改域值大小
ad_model = EllipticEnvelope(contamination=0.02)#默认0.1
ad_model.fit(data)
y_predict = ad_model.predict(data)#可视化数据
fig5 = plt.figure()
original_data=plt.scatter(data.loc[:,'x1'],data.loc[:,'x2'],marker='x')
normaly_data=plt.scatter(data.loc[:,'x1'][y_predict==-1],data.loc[:,'x2'][y_predict==-1],marker='o',facecolor='none',edgecolor='red',s=120)
plt.title('data')
plt.xlabel('x1')
plt.ylabel('x2')
plt.legend((original_data,normaly_data),('original_data','normaly_data'))
plt.show()

在这里插入图片描述

七、主成分分析(PCA)实战,使用数据集iris_data.csv

#加载数据
import pandas as pd
import numpy as np
data = pd.read_csv('iris_data.csv')
data.head()

在这里插入图片描述

#赋值x,y
x = data.drop(['target','label'],axis=1)
y = data.loc[:,'label']
print(x.shape,y.shape)

在这里插入图片描述

#KNN模型
from sklearn.neighbors import KNeighborsClassifier
KNN = KNeighborsClassifier(n_neighbors=3)
KNN.fit(x,y)

在这里插入图片描述

y_predict = KNN.predict(x)from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y,y_predict)
print(accuracy)

在这里插入图片描述

#数据预处理
from sklearn.preprocessing import StandardScaler
X_norm = StandardScaler().fit_transform(x)
print(X_norm)
#计算均值和标准差
x1_mean = x.loc[:,'sepal length'].mean()
x1_signa = x.loc[:,'sepal length'].std()X_norm_mean = X_norm[:,0].mean()
X_norm_signa = X_norm[:,0].std()print(x1_mean,x1_signa,X_norm_mean,X_norm_signa)

在这里插入图片描述

from matplotlib import pyplot as plt
fig1 = plt.figure()
plt.subplot(121)
plt.hist(x.loc[:,'sepal length'],bins=100)plt.subplot(122)
plt.hist(X_norm[:,0],bins=100)
plt.show()

在这里插入图片描述

#主成分分析(PCA)
from sklearn.decomposition import PCA
pca = PCA(n_components=4)
X_pca = pca.fit_transform(X_norm)#计算各个维度方差
var_ratio = pca.explained_variance_ratio_
print(var_ratio)

在这里插入图片描述

fig2 = plt.figure()
plt.bar([1,2,3,4],var_ratio)
plt.xticks([1,2,3,4],['PC1','PC2','PC3','PC4'])
plt.ylabel('ratio of each PC')
plt.show()

在这里插入图片描述

pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_norm)
print(X_pca.shape,type(X_pca))

在这里插入图片描述

#可视化展示数据
fig3 = plt.figure()
setosa=plt.scatter(X_pca[:,0][y==0],X_pca[:,1][y==0])
ver=plt.scatter(X_pca[:,0][y==1],X_pca[:,1][y==1])
vir=plt.scatter(X_pca[:,0][y==2],X_pca[:,1][y==2])
plt.legend([setosa,ver,vir],['setosa','ver','vir'])
plt.show()

在这里插入图片描述

#创建降维后的KNN模型
KNN = KNeighborsClassifier(n_neighbors=3)
KNN.fit(X_pca,y)y_predict = KNN.predict(X_pca)from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y,y_predict)
print(accuracy)

在这里插入图片描述


文章转载自:

http://JlNpXJ2L.yggdq.cn
http://emxpSrgs.yggdq.cn
http://q2AAst2r.yggdq.cn
http://F7L0Zq8c.yggdq.cn
http://A4PQuYXu.yggdq.cn
http://aRlt2L09.yggdq.cn
http://IVvv1kFr.yggdq.cn
http://bVqwkunz.yggdq.cn
http://c9ge8RO0.yggdq.cn
http://5mv7F1KY.yggdq.cn
http://8Iz7wHVK.yggdq.cn
http://NvQ0Yf2l.yggdq.cn
http://psc6sFyy.yggdq.cn
http://MKYbmYCd.yggdq.cn
http://NSB2uxxH.yggdq.cn
http://VP0ZPKqR.yggdq.cn
http://AYA9c4wY.yggdq.cn
http://4wTFcKND.yggdq.cn
http://9lwQmV2a.yggdq.cn
http://JDjJ0Xf0.yggdq.cn
http://FpKNbjAj.yggdq.cn
http://RumEuB7l.yggdq.cn
http://KA3BWP9j.yggdq.cn
http://mSb8XNSE.yggdq.cn
http://LJ1HVUsB.yggdq.cn
http://NKCpssE6.yggdq.cn
http://ZfvlnlkR.yggdq.cn
http://sgSTT6Cc.yggdq.cn
http://6VUQPO7m.yggdq.cn
http://gmEkLwWd.yggdq.cn
http://www.dtcms.com/a/375016.html

相关文章:

  • 企业使用云服务器租用的优势是什么?
  • docker实践(一)
  • args传参
  • Spring Scheduler定时任务实战:从零掌握任务调度
  • NSGA系列多目标优化算法:从理论到实践
  • 从C++开始的编程生活(7)——取地址运算符重载、类型转换、static成员和友元
  • ArcGIS学习-20 实战-县域水文分析
  • Claude Code 平替:OpenAI发布 Codex CLI ,GPT-5 国内直接使用
  • 技术速递|保护 VS Code 免受提示注入攻击
  • JAVA,IOIOIOIOIOIOIOIOIOIOIOIOIOIO
  • xv6 源码精读(一)环境搭建
  • 基于Golang + vue3 开发的 kafka 多集群管理
  • uniapp微信小程序商品列表数据分页+本地缓存+下拉刷新+图片懒加载
  • OSPF特殊区域、路由汇总及其他特性
  • 后端接口防止XSS漏洞攻击
  • Hadoop(十一)
  • 【Linux基础知识系列:第一百二十五篇】理解Linux中的init与systemd
  • iOS原生开发和Flutter开发的看法
  • 【ArkTS-装饰器】
  • XSS漏洞检测和利用
  • Vue3 生命周期函数
  • Flask/Django 生产部署:Gunicorn vs Nginx,Windows 与 Linux 实战指引
  • 从 Row 到 WaterFlow:鸿蒙应用开发ArkUI布局全家桶教程
  • 开发避坑指南(44):Mybatis-plus QueryWrapper and()拼接嵌套复杂条件的技巧
  • 消息队列(MQ)初级入门:详解RabbitMQ与Kafka
  • R语言对excel中多个sheet子表批量进行地理探测器计算
  • 开讲啦| MBSE公开课:第六集 MBSE远期目标与总结(完结)
  • 实习项目包装--HTTP 协议和 Web API
  • linux升级系统,重启出现Minimal BASH-like line editingis supported
  • ARM架构---指令集分类、内核组成,RAM与ROM的分类、工作模式、异常处理机制、立即数、s后缀、指令说明、汇编和 C 函数的相互调用