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

news/2025/3/12 8:08:39/

Python 数据分析重点知识点

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

可视化系列:

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

应用1

python"># 使用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

python"># 使用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

python"># 使用支持向量机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.ppmy.cn/news/1578554.html

相关文章

HTML左右分页2【搬代码】

HTML左右分页2 html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>左右分页布局</title>&l…

清华同方国产电脑能改windows吗_清华同方国产系统改win7教程

清华同方国产电脑能改windows吗&#xff1f;清华同方国产电脑如果采用的是兆芯kx-6000系列或kx-7000系列以及海光c86 3250 3350 X86架构处理器可以安装windows。在安装win7时bios中要关闭“安全启动”和开启legacy传统模式支持&#xff0c;如果是NVME接口的固态硬盘&#xff0c…

Tomcat+Servlet运行后出现404错误解决方案

TomcatServlet运行后出现404错误解决方案 一、错误效果复现 后续的解决方案&#xff0c;仅仅针对我遇到的情况。对不能涵盖大部分情况感到抱歉。 二、错误分析 先看看源代码&#xff1f; package com.example.secondclass.Servlet; import java.io.*; import jakarta.servl…

AI日报 - 2025年3月12日

AI日报 - 2025年3月12日 &#x1f31f; 今日概览&#xff08;60秒速览&#xff09; ▎&#x1f916; AGI突破 | Anthropic CEO预测AI将主导代码编写 &#x1f52c; 自训练技术显著提升LLM思维清晰度 ▎&#x1f4bc; 商业动向 | OpenAI与CoreWeave达成119亿美元基建协议 &…

macOS 终端优化

macOS 安装、优化、还原、升级 Oh My Zsh 完全指南 &#x1f680; Oh My Zsh 是 macOS 终端增强的利器&#xff0c;它能提供强大的自动补全、主题定制和插件支持&#xff0c;让你的终端更高效、更炫酷。本文将全面介绍 如何安装、优化、还原、重新安装和升级 Oh My Zsh&#x…

从零开始学机器学习——了解分类算法

分类算法 首先给大家介绍一个很好用的学习地址:https://cloudstudio.net/columns 分类算法是监督学习的一种重要方法,它与回归算法在许多方面有相似之处。监督学习的核心目标是利用已有的数据集进行预测,无论是数值型数据还是类别型数据。具体而言,分类算法主要用于将输入…

UI-APP---基于HBuilder X的微信小程序

目录 概要 Uni-app 和 HBuilderX 的关系 技术名词解释 ui-app: 概念&#xff1a; 核心特点&#xff1a; 技术细节 基本步骤&#xff1a; 开发流程 项目功能分析&#xff1a; ①首页包括公共头部、导航栏、轮播图、视频列表区域。 ②视频详情页包括公共头部区域、视频详情区域、…

操作系统知识点27

1.“并发性”&#xff1a;在单处理器环境下&#xff0c;两个程序交替在CPU上运行 2.系统调用时&#xff0c;调用程序和被调用程序位于不同状态 3.多道程序设计的含义&#xff1a;允许多个程序同时进入内存并运行 4.信号量属于低级通信方法 5.构成CPU的主要部件&#xff1a;…