python+Mosh网课笔记13 使用Python进行机器学习

devtools/2024/10/23 6:00:02/

 太久没写python代码了,学机器学习重新拾起python笔记比较简陋。

参考:mosh python网课

目录

一、通常的步骤

二、库和工具

三、环境

四、导入数据集

五、准备数据

六、预测-利用决策树

七、衡量模型的准确性

八、模型持久性

1. 保存模型

2. 加载模型

九、可视化决策树


一、通常的步骤

  1. 导入数据。数据通常以CSV格式存储。
  2. 清洗数据。比如删除重复数据或者不完整的数据。
  3. 把数据拆分成训练集、测试集等。
  4. 创建一个模型。
  5. 训练模型。
  6. 做出预测。
  7. 评估预测效果,对模型进行提升。

二、库和工具

  • Numpy 对处理多维数组很方便
  • Pandas 为数据分析提供了data frame
  • MatPlotLib
  • Scikit-Learn

三、环境

下载配置anaconda环境,这个在csdn上搜其他高赞帖子教程就行。

四、导入数据集

  1. 注册Kaggle账号,我用Google账号注册登录的。搜索Video Game Sales,找到Datasets,选择第一个,投票最多的那个。 下载是一个压缩包,解压,vgsales.csv文件放到代码工程文件夹下。
  2. 我是用的vscode新建.ipynb文件运行,不是直接用的jupyter(因为我之前用过,总是出问题)。vscode需要安装jupyter插件,运行时,遇到了问题 Running cells with '(Python 3.8.20)' requires the ipykernel package.
  3. 已解决,运行该命令即可:pip install ipykernel --upgrade   参考在vscode中运行jupyter时报错_running cells with 'python 3.8.13 ('pythonproject6-CSDN博客
  4. .ipynb文件下运行,数据集加载出来。
  5. python">import pandas as pd
    df = pd.read_csv('vgsales.csv') #读取csv文件中的数据。
    df 
    #df.shape 返回数据集的规模  (x,y) x是记录数,y是column数。
    #df.describe() 返回generates descriptive statistics 比如count,mean,min,max,
    #df.values() 以二维数组的形式返回表中的数据。
    

五、准备数据

  1. 利用music.csv删除genre列做预测。(这个文件直接搜mosh music.csv就行,github上有,我是在Google浏览器直接搜的。)
  2. 输入集:把genre列删了,只留age和gender列,预测genre列。
  3. 输出集:把genre列存储到y中,作为结果。X和y都准备出来,开始训练模型从X预测y。

六、预测-利用决策树

  1. 导入决策树的包:from sklearn.tree import DecisionTreeClassifier  。先下载这个sklearn包。pip install sklearn时出错了。提示我用pip install scikit-learn,需要挂v。

  2. python">import pandas as pd
    from sklearn.tree import DecisionTreeClassifier
    #决策树。scikit-learn库,这个机器学习库很受欢迎。music_data = pd.read_csv('music.csv')
    X = music_data.drop(columns=['genre']) 
    #不会修改原始数据集,会创建新数据集。
    y =  music_data['genre']model=DecisionTreeClassifier()
    model.fit(X,y)
    predictions = model.predict([ [21,1] ,[22,0]])
    predictions

 要求预测21岁的男生和22岁的女生喜欢的音乐数据,预测结果:

我们再回顾一下music_data,可见预测的数据准确。

直接建立预测准确的模型并不容易,我们可以通过微调模型或者使用其他模型的方式来提升预测准确性。

七、衡量模型的准确性

  • 70%-80%的数据用于训练,另外20%-30%的数据用于测试。
python">import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
#功能:将数据集分为两组。
from sklearn.metrics import accuracy_score
#计算准确度。music_data = pd.read_csv('music.csv')
X = music_data.drop(columns=['genre']) 
#不会修改原始数据集,会创建新数据集。
y =  music_data['genre']
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2) #20%的数据用于测试。
#输入集,输出集。model=DecisionTreeClassifier()
model.fit(X_train,y_train)
predictions = model.predict(X_test)score = accuracy_score(y_test,predictions) # 精度在[0,1]之间。
score

  • 修改test_size的大小,比如test_size=0.8。发现当训练集很小的时候,训练的准确度也很低。当我们给模型更多并且更干净的数据时,我们能得到更准确的结果。
  • 一些模型需要数千甚至数百万个样本来训练模型。我们这个music.csv中的数据只有17条,太少了。所以不断尝试重新运行时,发现准确度不是1了。

八、模型持久性

1. 保存模型

  • 导入包:from sklearn.externals import joblib #可以保存已加载模型。 报错:cannot import name 'joblib' from 'sklearn.externals'  解决:pip install joblib, 导入包:import joblib
python">import pandas as pd
from sklearn.tree import DecisionTreeClassifier
import joblib #可以保存已加载模型。music_data = pd.read_csv('music.csv')
X = music_data.drop(columns=['genre']) 
y =  music_data['genre']model=DecisionTreeClassifier()
model.fit(X,y)joblib.dump(model, 'music-recommender.joblib') #存储此模型的文件名称。#predictions = model.predict(X)

最后生成了music-recommender.joblib文件。


2. 加载模型

python">import pandas as pd
from sklearn.tree import DecisionTreeClassifier
import joblib #可以保存已加载模型。model = joblib.load('music-recommender.joblib') #存储此模型的文件名称。predictions = model.predict([[21,1]])
predictions

九、可视化决策树

生成music-recommender.dot文件,然后安装graphviz插件和软件,可视化。

python">import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn import treemusic_data = pd.read_csv('music.csv')
X = music_data.drop(columns=['genre']) 
y =  music_data['genre']model=DecisionTreeClassifier()
model.fit(X,y)tree.export_graphviz(model,out_file='music-recommender.dot',feature_names=['age','gender'], class_names=sorted(y.unique()), #重置class为genre去重后的结果。label='all', #每个框都有label,以便我们阅读。rounded=True, #每个框有圆角。filled=True) #每个框都能填充颜色。
  • 安装Graphviz Preview和Graphviz (dot) language插件(我不知道是哪个起作用,都安装了),安装插件后,仍然没用。我下载了Graphviz官网的exe文件,并且选择了自动添加环境变量中。参考:【VS Code】Windows10下VS Code配置Graphviz和DOT语言环境_怎么给codeblocks配置graphviz-CSDN博客


http://www.ppmy.cn/devtools/128077.html

相关文章

【ShuQiHere】深入解析数字电路中的锁存器与触发器

深入解析数字电路中的锁存器与触发器 🤖🔌 在数字电路设计中,**锁存器(Latch)和触发器(Flip-Flop)**是实现时序逻辑的基本元件。它们能够存储状态,是构建复杂数字系统的关键。本文将…

《云计算网络技术与应用》实训6-1:配置KVM虚拟机使用NAT网络

任务1、计算节点基础环境准备 1. 使用VMware安装CentOS 7虚拟机,安装时记得开启CPU虚拟化,命名为“KVMC6”。 2. (网卡配置和之前的一样,都用100网段)网关设置为192.168.100.1,地址段为192.168.100.10-25…

vue 刷新组件

vue 刷新组件 在Vue中,如果你需要强制刷新一个组件,可以通过改变组件的key属性来实现。当key改变时,Vue会认为这是一个全新的组件,并且会销毁旧的组件实例,创建一个新的实例。 以下是一个简单的例子: &l…

GS-SLAM论文阅读--GSORB-SLAM

前言 文章目录 前言1.背景介绍2.关键内容2.1 建图2.2跟踪2.3总体流程 3.文章贡献4.个人思考 1.背景介绍 3D高斯飞溅(3DGS)的出现最近引发了密集视觉SLAM研究的新浪潮。然而当前的方法面临着诸如对伪影和噪声的敏感性、训练视点的次优选择以及缺乏全局优…

双碳目标下储能产业新趋势与架构

0.引言 储能技术涉及能量的存储和利用,对电力系统平衡至关重要。它允许电力在需求时被储存和释放,对电力生产和消费方式产生重大影响。随着全球应对气候变化,风能和太阳能成为主要能源,但其不稳定性需要储能技术来提高可靠性。储…

燕山大学23级经济管理学院 10.18 C语言作业

燕山大学23级经济管理学院 10.18 C语言作业 文章目录 燕山大学23级经济管理学院 10.18 C语言作业1C语言的基本数据类型主要包括以下几种:为什么设计数据类型?数据类型与知识体系的对应使用数据类型时需要考虑的因素 21. 逻辑运算符2. 真值表3. 硬件实现4…

解决kafka3.0.0在windows下不能启动的问题

看到一个问题,说在用java代码发送kafka消息的时候能指定一个partition参数: import org.apache.kafka.clients.producer.ProducerRecord;public class KafkaProducerExample {public static void main(String[] args) {String topic "test";…

海洋CMS源码

海洋CMS(SeaCMS)是一个开源免费的PHP影视系统,适用于电脑、手机、平板和APP等多终端。它以其简单、快速、稳定的特点而闻名,并且完全开源,没有加密代码,使其更加安全。最新版本为V13,发布于2024…