tnblog
首页
视频
资源
登录

python 机器学习的尝鲜实例(一)学习笔记

3014人阅读 2023/3/28 17:32 总访问:3467387 评论:0 收藏:0 手机
分类: AI

python 机器学习的尝鲜实例(一)学习笔记

确定问题


任务:利用加州人口普查数据建立该州房价模型

问题


要确定业务目标是什么?(如何从最终构建的模型中创效获益)
了解目标会决定很多事情:
————如何确定问题、选用哪个算法、选取哪个性能度量指标、如何评估模型、花费多少精力来优化调整它。
————本例的目标:你的模型输出(房价中值预测)将与许多其他信号一起输入另一个机器学习系统。该下游系统将决定是否值得在特定区域投资。这一点至关重要,因为它直接影响收入。

明确答案


有监督学习:已经给出标记的训练数据。(举例:有一堆房产数据)
无监督学习:就是给你几个人你给它分类
回归:要对某个值进行预测。(通过一个指标就可以进行预测,比如:这个人体重多少就能测出大概的身高)
多重回归:使用多个特征进行预测。(多个特征进行预测就是多重回归)
一元回归:只预测单个值(由于我们只预测房价所以就是一元回归)
(没有连续数据不断流入系统,无需针对变化数据做出特别调整,数据量不大简单的批量学习即可)

选择性能指标RMSE


回归问题的典型性能指标是:RMSE(均方根误差)

参数 描述
m 数据集中的数据数量。
x(i) 数据集中第i个实例的所有特征;y(i):是其标签(该实例的期望输出值)
X 矩阵,包含数据集所有实例的所有特征(不包含标签)。
h 是系统的预测函数,也称为假设。
RMSE(X,h) 就是使用预测函数h,在一组示例数据中测量的成本函数。


这个公式主要是通过输入x(i)与h相乘得出预测房价值减去y(i)实际房价值的平方,最后所有数据加到一起的总和除以m行数。
这就是均方根误差。

选择性能指标MAE


MAE:平均绝对误差
RMSE和MAE都是测量两个向量(预测值向量喝目标值向量)之间距离的方法。

开始实践

获取数据


我使用的是VSCode,并且装的Jupyter插件。
首先下载数据集:https://github.com/ageron/handson-ml2/blob/master/datasets/housing/housing.tgz
下到本地,解压后是一个housing.csv的文件

安装相关库


我们需要安装pandasmatplotlibscikit-learn这三个库,安装命令如下:

  1. pip install pandas
  2. pip install matplotlib
  3. pip install scikit-learn

Pandas


Pandas库是一个流行的Python数据操作和分析库。它提供了用于高效存储和操作大型数据集的数据结构,以及用于数据清理、合并和重塑的工具。
Pandas的一些主要特征包括:
用于存储和操作表格数据的DataFrame和Series数据结构
用于在各种文件格式(包括CSV、Excel和SQL数据库)中读取和写入数据的工具
内置数据清理、过滤和聚合功能
支持处理缺失数据和处理重复数据
与其他流行的Python库集成,如NumPy和Matplotlib
接下来我们创建一个main.ipynb,来导入这个库并读取housing.csv文件。

  1. import pandas as pd
  2. housing = pd.read_csv('housing.csv')


housing的相关方法如下:

方法名 描述
read_csv 读取数据源
head 默认看前5行数据
info 数据集的简单描述,总行数、属性类型、非空值等。
describe 数值属性的摘要
hist 直方图
  1. housing.head()
  2. # 查看前十行数据
  3. housing.head(10)

  1. housing.info()

  1. housing.describe()

描述
count 值的总数是多少,不包含非空
mean 平均值
std 标准差,方差的平方根
min 最小值
max 最大值
25% 把数从小到大进行排列,排列出25%那一列的数
50% 把数从小到大进行排列,排列出50%那一列的数
75% 把数从小到大进行排列,排列出75%那一列的数
  1. housing.hist()
  2. # bins=每个数据分成50项
  3. # figsize=设计图形的大小
  4. housing.hist(bins=50, figsize=(20, 15))


我们可以看到housing_median_agemedian_house_value最后的数据有点问题,是需要将它处理掉的,一般不会升那么高。
这个以后我学了后面补起。

创建测试数据集


通常是随机数据集中20%左右的数据作为测试集,那么80%就是数据集。
sklearn.model_selectiontrain_test_split 函数。
接下来我们通过代码来创建测试集和数据集。

  1. from sklearn.model_selection import train_test_split
  2. # test_size 测试集大小20%
  3. # random_state 随机数生成器设置随机种子
  4. train_set, test_set = train_test_split(housing, test_size=0.2, random_state=42)


然后我们通过房价(median_income)进行数据拆分,通过参数bins来分割,每隔1.5万美金进行分类分5次最后一次为6万到最大值,这个值命名为income_cat

  1. import numpy as np
  2. housing["income_cat"] = pd.cut(housing["median_income"],
  3. bins=[0., 1.5, 3.0, 4.5, 6., np.inf],
  4. labels=[1, 2, 3, 4, 5])


通过head方法查看是否创建成功。

  1. housing.head()


ok!最后一列是有的。
然后我们看一下这一列的直方图。

  1. housing['income_cat'].hist()


接下来我们每层都进行抽样,20%作为测试集和80%作为训练数据集。

  1. # StratifiedShuffleSplit 是用于分层抽样
  2. from sklearn.model_selection import StratifiedShuffleSplit
  3. split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
  4. # 以income_cat这个属性进行抽样
  5. for train_index, test_index in split.split(housing, housing["income_cat"]):
  6. strat_train_set = housing.loc[train_index]
  7. strat_test_set = housing.loc[test_index]
  8. # 测试方面
  9. strat_test_set["income_cat"].value_counts() / len(strat_test_set)


最后清理数据。

  1. for set_ in (strat_train_set, strat_test_set):
  2. set_.drop("income_cat", axis=1, inplace=True)

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

python学习 1-安装

Ptyhon非常简单易用的面向对象的脚本语言,跨平台 入门简单python分2个版本 Python2、Python3。Python 2.7 将于 2020 年结...

python学习 2-基本语法

基础:python脚本语言,不需要编译(像C#、Java、PHP、C++需要编译成机器可识别的语言), 而直接由解释器解释,很多地方类似...

python学习 3-爬虫基本介绍 及简单实例

爬虫爬虫就是一只猪,蜘蛛。。 网络蜘蛛。互联网是一个网由各个网站组成。无数的蜘蛛就在网上到处爬,根据网址从一个网站爬...

python实例 1-日志抓取处理 补错附日志小技巧

有时候数据出了问题,可以从日志中恢复数据(如果你没记日志..没备份..→_→..)一、日志展示介绍个平常自己用的小方法,如...

python实例 2-12306抢票() 登陆

开坑年关将近,终于对12306下手了,,平安夜撸代码,攻克了12306的登陆 2018-12-24 22:16:00没错 这篇博客就写从零开始的异...

python安装pip以及使用pip安装requests等模块

pip很简单的介绍pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。如果想...

python数据集合区别

列表(list):可读写,值可以重复,有序排列,初始化语法:['tom',‘jerry’]元组(tuple):只读,值可以重复,...

python实例 2-12306抢票(二) 下单

第二篇 刷票与下单1.记住登陆上一篇写了登陆:http://www.tnblog.net/cz/article/details/162 为了方便调试 不让每次登陆都...

使用VS Code开发python

Vs Code开发Python可以很好的支持代码调试、智能提示、代码对齐等1:下载VS Codehttps://code.visualstudio.com/Downloadvs ...

python变量与命名

Python使用等号 ( = ) 作为赋值运算符,例如a = 66 就是一条赋值语句,作用就是将66赋值给变量a。Python是弱类型语言,弱类...

python关键字和内置函数

Python中包含了如下所示的关键字:上面这些关键字都不能作为变量名。另外,Python 3还提供了如下表所示的内置函数:也不能...

python基础输入和输出

Python使用print()函数向打印程序输出,采用input()函数接收程序输入。print()函数的语法格式如下:print(value,...,sep=&#...

python基本数据类型

Python包含两大类基本数据类型:数值类型、字符串类型,三大类组合数据类型:集合类型、序列类型和字典类型.数值类型:整型...

python中通过fake_useragent生成随机UserAgent

fake_useragent第三方库,来实现随机请求头的设置;GitHub ---> https://github.com/hellysmile/fake-useragent安...

python 升级pip

一条命令即可: python -m pip install --upgrade pip 安装成功后,一般是在python目录下面的Scripts里边的

python html编码解码

使用方法:html.escape(s)与html.unescape即可 import html s="<div>jsdlfjsl</div>" #html编...
这一世以无限游戏为使命!
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术