Python数据分析之机器学习基础

Python 数据分析重点知识点

本系列不同其他的知识点讲解,力求通过例子让新同学学习用法,帮助老同学快速回忆知识点

可视化系列:

  1. Python基础
  2. 数据分析工具
  3. 数据处理与分析
  4. 数据可视化
  5. 机器学习基础
五、机器学习基础
  • 了解机器学习概念、分类及常见算法
    • 监督学习:使用标注数据,训练模型预测输出,如分类、回归任务。以下应用都是监督学习
    • 无监督学习:处理未标注数据,寻找数据模式,如聚类、降维等。
  • 模型评估与选择
    • 掌握模型评估指标,使用交叉验证选最优模型。
  • 实践应用
    • 用 scikit-learn 等库构建简单机器学习模型解决实际问题。

应用1

# 使用KNN对鸢尾花数据集进行分类
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split#导入鸢尾花数据集并查看数据特征iris=datasets.load_iris()print('数据集结构:',iris.data.shape)# 获取属性
iris_x=iris.data
print(iris_x) #对应萼片长度、萼片宽度、花瓣长度和花瓣宽度
# 获取类别
iris_y=iris.target 
print(iris_y) #相应的类型,山鸢尾(Setosa),杂色鸢尾(Versicolor)和维吉尼亚鸢尾(Virginica)
# 划分成测试集合训练集
iris_train_x,iris_test_x,iris_train_y,iris_test_y=train_test_split(iris_x,iris_y,test_size=0.2,random_state=0)
#分类器初始化
knn=KNeighborsClassifier()
# 对数据集进行训练
knn.fit(iris_train_x,iris_train_y)
# 对测试集数据的鸢尾花类型进行预测
predict_result=knn.predict(iris_test_x)
print('测试集大小:',iris_test_x.shape)
print('真实结果:',iris_test_y)
print('预测结果:',predict_result)
#显示预测精确率
print('预测精确率:',knn.score(iris_test_x,iris_test_y))

在这里插入图片描述
应用2

# 使用KNN方法来实现手写数字识别
# coding=utf-8
import numpy as np
from os import listdirdef loadDataSet():# 获取训练数据集print("1.Loading trainSet...")trainFileList=listdir("source/HWdigits/trainSet")trainNum=len(trainFileList)trainX=np.zeros((trainNum,32*32))trainY=[]for i in range(trainNum):trainFile=trainFileList[i]# 将训练数据集向量化trainX[i,:]=img2vector('source/HWdigits/trainSet/%s'% trainFile,32,32)label=int(trainFile.split('_')[0]) # 读取文件名的第一位作为标记trainY.append(label)#获取测试数据集print("2.Loading testSet...")testFileList=listdir("source/HWdigits/testSet")testNum=len(testFileList)testX=np.zeros((testNum,32*32))testY=[]for i in range(testNum):testFile=testFileList[i]# 将测试数据集向量化testX[i,:]=img2vector('source/HWdigits/testSet/%s'% testFile,32,32)label=int(testFile.split('_')[0]) # 读取文件名的第一位作为标记testY.append(label)return trainX,trainY,testX,testY
def img2vector(filename,h,w):imgVector=np.zeros((1,h*w))fileIn=open(filename)for row in range(h):lineStr=fileIn.readline()for col in range(w):imgVector[0,row*32+col]=int(lineStr[col])return imgVector
def myKNN(testDigit,trainX,trainY,k):numSamples=trainX.shape[0]   # shape[0] 代表行,每一行一个图片,得到样本个数#计算欧式距离diff=[]for n in range(numSamples):diff.append(testDigit-trainX[n])  # 每个个体差diff=np.array(diff)             # 转变为ndarray# 对差求平方和,然后取和的平方根squaredDiff=diff ** 2squaredDist=np.sum(squaredDiff,axis=1)distance=squaredDist**0.5# 2.按距离进行排序sortedDistIndices=np.argsort(distance)classCount={}        # 存放各类的个体数量for i in range(k):#3.按顺序读取标签voteLabel=trainY[sortedDistIndices[i]]#4.计算该标签次数classCount[voteLabel]=classCount.get(voteLabel,0)+1# 5.查找出现次数最多的类别,作为分类结果maxCount=0for key,value in classCount.items():if value>maxCount:maxCount=valuemaxIndex=keyreturn maxIndextrain_x,train_y,test_x,test_y=loadDataSet()
numTestSamples=test_x.shape[0]
matchCount=0
print("3.Find the most frequent label int k-nearest...")
print("4.show the result...")
for i in range(numTestSamples):predict=myKNN(test_x[i],train_x,train_y,3)print("result is: %d, real answer is: %d"%(predict,test_y[i]))if predict == test_y[i]:matchCount+=1
accuracy=float(matchCount)/numTestSamples
# 5.输出结果
print("5. Show the accuracy...")
print("   The total number of errors is: %d"%(numTestSamples-matchCount))
print("   The classsify accuracy is: %.2f%%"%(accuracy*100))

数据集链接

应用3

# 使用支持向量机SVM算法对随机数进行训练分类
from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt#随机生成两组数据,并通过(-2,2)距离调整为明显的0/1两类
data = np.concatenate((np.random.randn(30, 2) - [-2, 2], np.random.randn(30, 2) + [-2, 2]))
target=[0]*30+[1]*30#建立SVC模型
clf=svm.SVC(kernel='linear')
clf.fit(data,target)#显示结果
w=clf.coef_[0]
a=-w[0]/w[1]
print('参数 w:',w)
print("参数 a:",a)
print("支持向量机:",clf.support_vectors_)
print("参数 coef_",clf.coef_)#使用结果参数生成分类线
xx=np.linspace(-5,5)
yy=a*xx-(clf.intercept_[0]/w[1])#绘制穿过正支持向量的虚线
b=clf.support_vectors_[0]
yy_Neg=a*xx+(b[1]-a*b[0])
#绘制穿过负支持向量的虚线
b=clf.support_vectors_[-1]
yy_Pos=a*xx+(b[1]-a*b[0])#绘制黑色实线
plt.plot(xx,yy,'r-')
#黑色虚线
plt.plot(xx,yy_Neg,'k--')
plt.plot(xx,yy_Pos,'k--')#绘制样本散点图
plt.scatter(clf.support_vectors_[:,0],clf.support_vectors_[:,1])
plt.scatter(data[:,0],data[:,1],c=target,cmap=plt.cm.coolwarm)plt.xlabel("x")
plt.ylabel("y")
plt.title("Support Vector Classification")
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/73106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我与DeepSeek读《大型网站技术架构》(10)- 维基百科的高性能架构设计分析

目录 网站整体架构核心组件请求处理流程图关键环节说明 性能优化策略前端优化:拦截 80% 以上请求服务端优化:高性能 PHP 集群后端优化:存储与缓存极致设计Memcached 持久化连接 性能优化策略对比表 网站整体架构 核心组件 Wikipedia 的架构…

Excel多级联动下拉菜单设置

1.问题描述 现有数据表如下图所示: 该表中包括省、市、县三级目录。 现要将其整理成数据表模板,如下图所示: 要求制作成下拉菜单的形式,且每一级目录的下拉菜单列表要根据上一级目录的内容来确定。 如上图所示,只有…

智驾技术全链条解析

智驾技术全链条解析(2025年最新版) 智驾技术涵盖从环境感知到车辆控制的完整闭环,涉及硬件、算法、数据与系统集成等多个领域。以下结合行业最新进展(截至2025年3月)进行深度拆解: 一、感知技术&#xff1…

SpringMVC执行的流程

SpringMVC 基于 MVC 架构模式,核心流程时前端控制室 DispathcherServlet 统一调度,通过组件协作完成 http 的请求与响应。 对于 dispatchServlet 作为前端请求的控制器,全局的访问点,首先将根据 URL 调用 HandlerMapping 获取 Han…

Linux学习(十五)(故障排除(ICMP,Ping,Traceroute,网络统计,数据包分析))

故障排除是任何 Linux 用户或管理员的基本技能。这涉及识别和解决 Linux 系统中的问题。这些问题的范围包括常见的系统错误、硬件或软件问题、网络连接问题以及系统资源的管理。Linux 中的故障排除过程通常涉及使用命令行工具、检查系统和应用程序日志文件、了解系统进程&#…

存储过程和自定义函数在银行信贷业务中的应用(oracle)

数据校验和清洗 例如,检查客户的年龄是否在合理范围内,贷款金额是否符合规定的上下限等。 对于不符合规则的数据,可以进行清洗和修正。比如,将空值替换为默认值,或者对错误的数据进行纠正。 CREATE OR REPLACE PROC…

指令微调 (Instruction Tuning) 与 Prompt 工程

引言 预训练语言模型 (PLMs) 在通用语言能力方面展现出强大的潜力。然而,如何有效地引导 PLMs 遵循人类指令, 并输出符合人类意图的响应, 成为释放 PLMs 价值的关键挑战。 指令微调 (Instruction Tuning) 和 Prompt 工程 (Prompt Engineerin…

【c++】反转字符串

说明 将string类型的字符串本身反转 用到库&#xff1a;algorithm 示例代码 #include <iostream> #include <string> #include <algorithm> using namespace std;int main() {string str "123";reverse(str.begin(), str.end());cout <<…

正则表达式(复习)

文章目录 一、[]: 一个字符集合二、{}: 重复次数三、特殊符号四、(): 分组五、python代码示例六、注意 正则表达式(regular expression)描述了一种字符串匹配的模式&#xff08;pattern&#xff09;&#xff0c;可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个…

ARMV8的64位指令

一、介绍 ARMv8 体系结构最大的改变是增加了一个新的 64 位的指令集&#xff0c;这是早前 ARM 指令集 的有益补充和增强。它可以处理 64 位宽的寄存器和数据并且使用 64 位的指针来访问内存。这 个新的指令集称为 A64 指令集&#xff0c;运行在 AArch64 状态。 ARMv8 兼容旧的…

线性代数之矩阵特征值与特征向量的数值求解方法

文章目录 前言1. 幂迭代法&#xff08;Power Iteration&#xff09;幂法与反幂法求解矩阵特征值幂法求最大特征值编程实现补充说明 2. 逆幂迭代法&#xff08;Inverse Iteration&#xff09;移位反幂法 3. QR 算法&#xff08;QR Algorithm&#xff09;——稠密矩阵理论推导编程…

VScode:运行程序停止后,频繁出现终端进程被终止

VScode里面powershell被迫关闭 bug场景排查原因解决办法 bug场景 系统&#xff1a;Windows IDE&#xff1a;Visual Studio Code 停止运行程序后&#xff0c;按向上箭头想要执行上一步命令&#xff0c;忽然终端页面强行关闭&#xff0c;并报错如下&#xff1a; 终端进程 &quo…

[MERN] 使用 socket.io 实现即时通信功能

[MERN] 使用 socket.io 实现即时通信功能 效果实现如下&#xff1a; MERN-socket.io 实现即时聊天 Github 项目地址:https://github.com/GoldenaArcher/messenger-mern 项目使用了 MERN(MongoDB, Express, React, Node.js) socket.io 实现即时通信功能&#xff0c;并且使用了…

【菜鸟飞】Conda安装部署与vscode的结合使用

介绍 Conda 是一个跨平台的开源工具&#xff0c;用于管理软件包和环境。最初由 Anaconda 公司开发&#xff0c;它的设计目标是支持数据科学和机器学习领域&#xff0c;但其功能不仅局限于此。 以下是 Conda 的核心特点&#xff1a; 包管理&#xff1a;安装、更新、卸载各种库…

《Android应用性能优化全解析:常见问题与解决方案》

目录 一、UI卡顿/掉帧 二、内存泄漏&#xff08;Memory Leak&#xff09; 三、ANR&#xff08;Application Not Responding&#xff09; 四、列表滑动卡顿&#xff08;RecyclerView/ListView&#xff09; 五、冷启动耗时过长 六、内存抖动&#xff08;Memory Churn&#x…

【MySQL是怎么运行的】0、名词解释

聚簇索引&#xff1a;聚簇索引和数据在一起&#xff0c;又名主键索引&#xff0c;是主键id构建的一颗B树&#xff0c;非叶节点是主键id&#xff0c;叶子节点是真实数据。其他索引统称二级索引&#xff0c;也称为非聚簇索引。覆盖索引&#xff1a;查找的数据就在索引树上&#x…

深入解析 TCP 协议【真题】

传输控制协议&#xff08;TCP&#xff09;解析与题目解析 题目解析 关于传输控制协议&#xff08;TCP&#xff09;表述不正确的是&#xff1f; A. 主机寻址 B. 进程寻址 C. 流量控制 D. 差错控制 TCP&#xff08;Transmission Control Protocol&#xff09;是面向连接、可靠传…

单例模式的五种实现方式

1、饿汉式 ①实现&#xff1a;在类加载的时候就初始化实例 ②优点&#xff1a;线程安全 ③缺点&#xff1a;实例在类加载的时候创建&#xff0c;可能会浪费资源 //饿汉式 public class EagerSingleton{private EagerSingleton(){} //私有构造方法private static EagerSingle…

SwiftUI 让视图自适应高度的 6 种方法(四)

概览 在 SwiftUI 的世界里&#xff0c;我们无数次都梦想着视图可以自动根据布局上下文“因势而变”‌。大多数情况下&#xff0c;SwiftUI 会将每个视图尺寸处理的井井有条&#xff0c;不过在某些时候我们还是得亲力亲为。 如上图所示&#xff0c;无论顶部 TabView 容器里子视图…

小程序SSL证书过期怎么办?

SSL证书就像小程序的“安全锁”&#xff0c;一旦过期&#xff0c;用户访问时会被提示“不安全”&#xff0c;轻则流失客户&#xff0c;重则数据泄露&#xff01;作为企业负责人&#xff0c;如何快速解决证书过期问题&#xff1f;又该如何避免再次踩坑&#xff1f;这篇指南给你答…