机器学习极简入门教程(一)
阅读此文,需要有python基础,有英文阅读能力的人点这里。
part1
这里不回答机器学习是什么,能做什么,只告诉你如何快速上手。
熟悉你手中的数据。
1.常用模块导入命令
import pandas as pd
2.文件导入命令
FILE_PATH=".CSV后缀文件存放路径"
data = pd.read_csv(FILE_PATH)
3.数据探索命令。这里以房价预测数据为例,这里下载所需数据,提取码:bn9c。
- 查看数据规模
data.shape
len(data)
- 查看列名
data.columns
- 查看列名属性
data.info()
- 头部数据查看
data.head()
- 基本统计
data.describe()
其中有:平均值(mean)、标准差(std)、最小值(min)、最大值(max)以及1/4、1/2、3/4分位数(25%、50%、75%)。
筛选数据
1.缺失值处理
data = data.dropna(axis=0)
2.选出预测目标
y = data.Price
3.选出特征。特征可以理解成影响预测结果的要素。如何确定这些要素,这是后面的话题。
data_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
X = data[data_features]
建模
可以把模型理解成一个黑箱,有入口和出口,入口数据是X,出口数据是y。
1.模型方法引入
from sklearn.tree import DecisionTreeRegressor
模型的选择对预测结果的精确度有很大影响,这里我们先选择决策树模型。你只需要对该模型有个直观的印象。
2.创建和拟合
model = DecisionTreeRegressor(random_state=1)
model.fit(X,y)
random_state是为了确保每次运行都能得到相同的结果。
part2
模型拟合后关心的问题是模型是否合适。如何度量?我们引入一个新的概念:平均绝对误差(MAE)。
平均绝对误差
1.定义:
2. 使用
- 模块导入
from sklearn.metrics import mean_absolute_error
- 预测和求MAE
predicted_price = model.predict(X)
mean_absolute_error(y,predicted_price)
细心的你可能会发现,我们在模型拟合和价格预测中用了同一份样本数据X,这显然有些不合理。一个常用的思路是将数据拆分成两部分,分别用来拟合模型和预测结果。
数据拆分
- 模块导入
from sklearn.model_selection import train_test_split
2.数据拆分
train_X,val_X,train_y,val_y = train_test_split(X,y,random_state=1)
3.建模、预测和计算MAE
model = DecisionTreeRegressor(random_state =1)model.fit(train_X,train_y)val_predictions = model.predict(val_X)print(mean_absolute_error(val_y,val_predictions))
完整代码示例
第二部分到这里就结束了,我们了解了MAE,并学会了简单的数据拆分方法,下面是完整的代码。
FILE_PATH ="C:\\Users\\Administrator\\Desktop\\kaggle\\data\\"
FILE_INDEX ="melb_data.csv"import pandas as pddata = pd.read_csv(FILE_PATH+FILE_INDEX)y = data.Price# print(y.shape)data_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']X = data[data_features]from sklearn.tree import DecisionTreeRegressor# model = DecisionTreeRegressor(random_state=0)# # print(model.fit(X,y))
# model.fit(X,y)from sklearn.metrics import mean_absolute_error# predicted_price = model.predict(X)# print(mean_absolute_error(y,predicted_price))from sklearn.model_selection import train_test_splittrain_X,val_X,train_y,val_y = train_test_split(X,y,random_state=1)model = DecisionTreeRegressor(random_state =1)model.fit(train_X,train_y)val_predictions = model.predict(val_X)print(mean_absolute_error(val_y,val_predictions))
part3
这部分依旧是对模型验证的讨论。我们会接触到两个新的概念:过拟合(underfitting)和欠拟合(overfitting)。
非官方解释
大白话解释起来就是:照顾数据中的大多数,忽略极少数,这是一种好的拟合;企图去迎合全部数据导致模型预测出现很大偏差,这就是过拟合;仅仅迎合一小部分而忽视大多数,这就是欠拟合。权威解释自行百度。
模拟实验
- 你需要知道:
在scikit-learn 文档中,决策树模型有许多可选配置项,很多重要的配置项都对树的高度(深度)有影响。这里我们只关注参数:max_leaf_nodes。 实验原理:
通过改变max_leaf_nodes的值来比较MAE大小,从而选择出较适合的参数值。在这个过程中,参数值的改变会导致模型欠拟合或是过拟合。完整代码示例:
FILE_PATH ="C:\\Users\\Administrator\\Desktop\\kaggle\\data\\"
FILE_INDEX ="melb_data.csv"import pandas as pddata = pd.read_csv(FILE_PATH+FILE_INDEX)filtered_data = data.dropna(axis=0)data_features =['Rooms', 'Bathroom', 'Landsize', 'BuildingArea', 'YearBuilt', 'Lattitude', 'Longtitude']X = filtered_data[data_features]y = filtered_data.Pricefrom sklearn.tree import DecisionTreeRegressorfrom sklearn.metrics import mean_absolute_errordef get_mae(max_leaf_nodes,train_X,val_X,train_y,val_y):model = DecisionTreeRegressor(max_leaf_nodes=max_leaf_nodes,random_state=0)model.fit(train_X,train_y)preds_val = model.predict(val_X)mae = mean_absolute_error(val_y,preds_val)return(mae)from sklearn.model_selection import train_test_splittrain_X,val_X,train_y,val_y = train_test_split(X,y,random_state=1)# compare MAE with differing values of max_leaf_nodesfor max_leaf_nodes in [5,50,500,5000]:my_mae = get_mae(max_leaf_nodes,train_X,val_X,train_y,val_y)print("Max leaf nodes: %d \t\t Mean Absolute Error: %d" %(max_leaf_nodes, my_mae))
- 结果图示:
显然500是最佳的参数值。这一部分我们学会了通过比较MAE来确定较合适的参数值,也知道了参数值的不同可能会造成模型过拟合或者欠拟合。下一部分我们回到数据本身,探讨对原始数据的处理。
机器学习极简入门教程(一)相关推荐
- Nginx 极简入门教程
Nginx 极简入门教程 基本介绍 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP服务. Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第 ...
- Python极简入门教程
前言 为了方便各位小白能轻松入门Python,同时加深自己对Python的理解,所以创造了"Python极简入门教程",希望能帮到大家,若有错误请多指正,谢谢.极简入门教程代表着不 ...
- 机器学习极简入门课程
开篇词 | 入门机器学习,已迫在眉睫 大家好,我是李烨.现就职于微软(Microsoft),曾在易安信(EMC)和太阳微系统(Sun Microsystems)任软件工程师.先后参与过聊天机器人.大数 ...
- 为 AI 初学者打造的《机器学习极简入门》面世了!
随着人工智能技术的发展,机器学习已成为软件 / 互联网行业的常用技能,并开始向更多行业渗透.对越来越多的 IT 技术人员及数据分析从业者而言,机器学习正在成为必备技能之一. 今天我们就来聊聊机器学习的 ...
- tensorflow平台极简方式_TensorFlow极简入门教程
原标题:TensorFlow极简入门教程 随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.本文介绍了TensorFlow 基础,包括静态计 ...
- pyecharts极简入门教程
作者:luanhz 来源:小数志 导读 数据可视化是整个数据分析流程中的关键环节,甚至有着一图定成败的关键性地位.前期,陆续推出了matplotlib和seaborn详细入门教程,对于常规的数据探索和 ...
- pyecharts x轴字体大小调整_pyecharts极简入门教程
导读 数据可视化是整个数据分析流程中的关键环节,甚至有着一图定成败的关键性地位.前期,陆续推出了matplotlib和seaborn详细入门教程,对于常规的数据探索和基本图表制作是足够的,但二者的一个 ...
- 今日推荐课程:机器学习极简入门
课程介绍 本达人课针对机器学习初学者,从机器学习.深度学习最基本的原理及学习意义入手,以模型为驱动,带领大家吃透几个最经典的机器学习模型--学习这些模型的原理.数学推导.训练过程和优化方法. 本课为每 ...
- python函数五要素_机器学习极简入门
首先,我们来看下当前机器学习领域招聘市场行情. 上面图例中所有带有"算法"."人工智能"."数据挖掘"."NLP"字样的 ...
最新文章
- 深入学习Redis持久化
- 图神经网络概述:Graph Neural Networks
- boost::endian模块实现buffer的测试程序
- Akka(9): 分布式运算:Remoting-远程构建式
- 【还是回来了】博客搬家--https://cangbean.github.io
- 开源运维管理软件排名_车主无忧:为什么放弃开源Kafka?
- python中实现上下文管理器的两种方法
- python webbrowser_Python中webbrowser的用法
- 大型网站技术架构读书笔记
- c246芯片组服务器主板,支持Xeon E-2100系列:ASRock 华擎 发布 C246M WS 主板
- 向量的夹角余弦公式_向量的夹角公式是什么?
- java调用WebService接口工具
- 【解决方案 六】---在VS2015里使用ILDasm
- 走向世界中的我国摄影测量与遥感 ——访中国测绘学会理事长、国家测绘局原副局长杨凯
- 我的免费版mbti职业性格测试
- 5G NTN进展简述
- 项目开发-工具-版本控制Git完整系统化使用说明
- everything增强神器,文档搜索效率何止翻倍!
- TPLINK WR941N V2_090803 路由器 后门
- 智慧消防解决方案-全套大合集
热门文章
- 【笔记】ARM指令系统
- 计算机用户注销后不见了,注销当前用户后 Win10找不到Administrator用户登录选项怎么解决?...
- zzlibsvm / liblinear中的交叉训练技巧
- 网页文档下载不了怎么办 亲测可用!建议收藏!
- quartz简单配置
- 磁盘类型由动态转换成基本
- java jisuan da xie zi mu ge shu_Java 实现汉字转换为拼音的实例
- [初学Spring Boot](1):打不开localhost:8080/hello
- ISA SERVER常见问题总结专用贴(转)
- Red Panda DEV-C++更新到6.7.5啦