3.Your First Machine Learning Model
Selecting Data for Modeling
你的数据集有太多的变量包裹住你的头。你怎么能把这些压倒性的数据削减到你能理解的东西?
我们首先使用我们的直觉选择一些变量。 后面的课程将向您展示自动确定变量优先级的统计技巧。
要选择变量/列,我们需要查看数据集中所有列。 这是通过DataFrame的columns属性(下面的代码)完成的。
[1]
import pandas as pdmelbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv'
melbourne_data = pd.read_csv(melbourne_file_path)
melbourne_data.columns
Index(['Suburb', 'Address', 'Rooms', 'Type', 'Price', 'Method', 'SellerG','Date', 'Distance', 'Postcode', 'Bedroom2', 'Bathroom', 'Car','Landsize', 'BuildingArea', 'YearBuilt', 'CouncilArea', 'Lattitude','Longtitude', 'Regionname', 'Propertycount'],dtype='object')
[2]
# The Melbourne data has some missing values (some houses for which some variables weren't recorded.)
# We'll learn to handle missing values in a later tutorial.
# Your Iowa data doesn't have missing values in the columns you use.
# So we will take the simplest option for now, and drop houses from our data.
# Don't worry about this much for now, though the code is:# dropna drops missing values (think of na as "not available")
melbourne_data = melbourne_data.dropna(axis=0)
有很多方法可以选择数据的子集。 pandas课程更深入地介绍了这些内容,但我们现在将重点关注两种方法。
- 点符号,我们用它来选择“预测目标”
- 选择列表,我们用它来选择
Selecting The Prediction Target
您可以使用点符号来提取变量。 这一列存储在一个Series中,它大致类似于只有一列数据的DataFrame。
我们将使用点符号来选择我们想要预测的列,这称为预测目标。 按照惯例,预测目标称为y。 因此,我们需要在墨尔本数据中保存房价的代码是
[3]
y = melbourne_data.Price
Choosing "Features"
我们模型中的列(后来用于预测)被称为“特征”。 在我们的例子中,那些将是用于确定房价的列。 有时,您将使用除目标之外的所有列作为要素。 其他时候你用更少的功能会更好。
目前,我们将构建一个只有少数特征的模型。 稍后您将看到如何迭代和比较使用不同特征构建的模型。
我们通过在括号内提供列表名来选择多个特征。 该列表中的每个项目都应该是一个字符串(带引号)。
这是一个例子:
【4】
melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
按照惯例,这个数据称为X.
【5】
X = melbourne_data[melbourne_features]
让我们使用describe方法和head方法快速查看我们将用于预测房价的数据,该方法显示前几行。
【6】
X.describe()
Rooms | Bathroom | Landsize | Lattitude | Longtitude | |
---|---|---|---|---|---|
count | 6196.000000 | 6196.000000 | 6196.000000 | 6196.000000 | 6196.000000 |
mean | 2.931407 | 1.576340 | 471.006940 | -37.807904 | 144.990201 |
std | 0.971079 | 0.711362 | 897.449881 | 0.075850 | 0.099165 |
min | 1.000000 | 1.000000 | 0.000000 | -38.164920 | 144.542370 |
25% | 2.000000 | 1.000000 | 152.000000 | -37.855438 | 144.926198 |
50% | 3.000000 | 1.000000 | 373.000000 | -37.802250 | 144.995800 |
75% | 4.000000 | 2.000000 | 628.000000 | -37.758200 | 145.052700 |
max | 8.000000 | 8.000000 | 37000.000000 | -37.457090 | 145.526350 |
[7]
X.head()
Rooms | Bathroom | Landsize | Lattitude | Longtitude | |
---|---|---|---|---|---|
1 | 2 | 1.0 | 156.0 | -37.8079 | 144.9934 |
2 | 3 | 2.0 | 134.0 | -37.8093 | 144.9944 |
4 | 4 | 1.0 | 120.0 | -37.8072 | 144.9941 |
6 | 3 | 2.0 | 245.0 | -37.8024 | 144.9993 |
7 | 2 | 1.0 | 256.0 | -37.8060 | 144.9954 |
使用这些命令直观地检查数据是数据科学家工作的重要组成部分。 您经常会在数据集中发现值得进一步检查的惊喜。
Building Your Model
您将使用scikit-learn库来创建模型。 编码时,此库编写为sklearn,您将在示例代码中看到。 Scikit-learn是最常用的库,用于对通常存储在DataFrame中的数据类型进行建模。
构建和使用模型的步骤如下:
定义:它将是什么类型的模型? 决策树? 其他一些模型? 还指定了模型类型的一些其他参数。
拟合:从提供的数据中捕获模式,这是建模的核心。
预测:听起来是什么样的
评估:确定模型预测的准确程度。
下面是使用scikit-learn定义决策树模型并将其与特征和目标变量拟合的示例。
【8】
from sklearn.tree import DecisionTreeRegressor# Define model. Specify a number for random_state to ensure same results each run
melbourne_model = DecisionTreeRegressor(random_state=1)# Fit model
melbourne_model.fit(X, y)
DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=None,max_leaf_nodes=None, min_impurity_decrease=0.0,min_impurity_split=None, min_samples_leaf=1,min_samples_split=2, min_weight_fraction_leaf=0.0,presort=False, random_state=1, splitter='best')
许多机器学习模型允许模型训练中的一些随机性。 为random_state指定一个数字可确保您在每次运行中获得相同的结果。 这被认为是一种很好的做法。 您使用任何数字,模型质量不会取决于您选择的确切值。
我们现在有一个可以用来进行预测的拟合模型。
在实践中,你会想要对市场上的新房子进行预测,而不是对我们已经有价格的房屋进行预测。 但是我们将对训练数据的前几行进行预测,以了解预测函数的工作原理。
【9】
print("Making predictions for the following 5 houses:")
print(X.head())
print("The predictions are")
print(melbourne_model.predict(X.head()))
Making predictions for the following 5 houses:Rooms Bathroom Landsize Lattitude Longtitude
1 2 1.0 156.0 -37.8079 144.9934
2 3 2.0 134.0 -37.8093 144.9944
4 4 1.0 120.0 -37.8072 144.9941
6 3 2.0 245.0 -37.8024 144.9993
7 2 1.0 256.0 -37.8060 144.9954
The predictions are
[1035000. 1465000. 1600000. 1876000. 1636000.]
Your Turn
尝试进行模型建立练习
3.Your First Machine Learning Model相关推荐
- BadNets Identifying Vulnerabilities in the Machine Learning Model Supply Chain
归纳 这篇文章说的是深度学习模型中植入后门(backdoor)的一种方法.所谓后门是安防领域一个行话,本文中实现backdoor的方式是,训练时对训练数据做手脚,不仅使用正常训练数据,还做" ...
- AI:Algorithmia《2020 state of enterprise machine learning—2020年企业机器学习状况》翻译与解读
AI:Algorithmia<2020 state of enterprise machine learning-2020年企业机器学习状况>翻译与解读 目录 <2020 state ...
- Paper:《Hidden Technical Debt in Machine Learning Systems—机器学习系统中隐藏的技术债》翻译与解读
Paper:<Hidden Technical Debt in Machine Learning Systems-机器学习系统中隐藏的技术债>翻译与解读 导读:机器学习系统中,隐藏多少技术 ...
- An Introduction to Hashing in the Era of Machine Learning
In December 2017, researchers at Google and MIT published a provocative research paper about their e ...
- An example machine learning notebook
原文地址 An example machine learning notebook Notebook by Randal S. Olson Supported by Jason H. Moore Un ...
- Machine Learning 高频面试题
第一类问题与机器学习背后的算法和理论有关. [Algorithms]你必须了解算法之间的比较,以及怎样正确地评价它们的效率和准确性. 第二类与你的编程能力,对于算法和理论的运行能力有关 [Progra ...
- ML:MLOps系列讲解之《基于ML的软件的三个层次之02 Model: Machine Learning Pipelines——2.6 ML Model serialization forma》解读
ML:MLOps系列讲解之<基于ML的软件的三个层次之02 Model: Machine Learning Pipelines--2.6 ML Model serialization forma ...
- ML:MLOps系列讲解之《基于ML的软件的三个层次之02 Model: Machine Learning Pipelines——2.5 Different forms of ML workfl》解读
ML:MLOps系列讲解之<基于ML的软件的三个层次之02 Model: Machine Learning Pipelines--2.5 Different forms of ML workfl ...
- ML:MLOps系列讲解之《基于ML的软件的三个层次之02 Model: Machine Learning Pipelines 2.1~2.4》解读
ML:MLOps系列讲解之<基于ML的软件的三个层次之02 Model: Machine Learning Pipelines 2.1~2.4>解读 目录 <基于ML的软件的三个层次 ...
最新文章
- C语言程序设计 细节总结(第8章 指针)
- 建立数据库时连接出错_PHP的福音!支持多数据库连接,高性能的开源MySQL连接池...
- docker部署下的nginx负载均衡时,无法获取真实ip的问题
- 64位Ubuntu 12.04系统下安装Qt library和Qt Creator全过程记录
- MySQL集群搭建——主备模式
- jzoj3347,bzoj3257-[NOI2013模拟]树的难题【树形dp】
- mysql or全表_mysql or条件可以使用索引而避免全表
- 菜鸟进阶Linux高手之路——第三天
- Linux start-kernel
- 非常干货之Python资源大全
- 知识竞赛系统的计时器数字或滚动抽签数字不显示的原因解惑
- 【22】基于java的电影院售票管理系统
- miRNA数据库篇——Rfam数据库
- nRF52笔记(5)sniffer 抓包
- 利用广播星历解算北斗卫星位置及精度分析
- VC++公安指纹识别系统
- 论文阅读 | Combating Adversarial Misspellings with Robust Word Recognition
- SQL SERVER数据库置疑后恢复步骤
- java实现读取excel用例,testNg自动化,读取excel的数据
- “消费者至上:媒体新时代 ”主题响彻IBC2019
热门文章
- java三年,Java开发三年,你不得不了解的JVM(一)
- python免费下载及安装_Python的下载及安装
- linux上git克隆命令,Git clone命令用法
- java 4个系统,JSP系统的四个组成部分
- linux免密登录_Linux SSH免密钥登录总结
- ajax ssm 页面跳转_SSM框架的面试常见问题
- linux内核编译后 make: 警告:检测到时钟错误.,系统时钟 make: 警告:检测到时钟错误。您的创建可能是不完整的。...
- vs2013编译osg缺少mfc120d.lib
- 【转】ABP源码分析二十二:Navigation
- WebDAV, IIS, 和SharePoint之间的关系