前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >100天机器学习实践之第1天

100天机器学习实践之第1天

作者头像
fanzhh
发布2019-08-20 11:29:47
6380
发布2019-08-20 11:29:47
举报

这是github上的一个项目,地址在这儿,作者@# Avik-Jain


Step 1:导入库

练习中,这两个重要的库每次都要导入。Numpy包含数学函数,Pandas用于导入和管理数据集。

import numpy as np
import pandas as pd

Step 2:导入数据

数据集一般采用.csv格式。csv文件中,表格数据使用文本格式保存。每行为一条记录。我们使用read_csv方法读取csv文件保存到dataframe中,然后从dataframe中分离出矩阵和向量。

dataset = pd.read_csv('../datasets/Data.csv')
X = dataset.iloc[:,:-1].values
Y = dataset.iloc[:,3].values

Step 3:处理缺失数据

获得的数据极少是规范的。因为各种原因,数据有可能缺失。缺失的数据需提前处理,以防影响我们的机器学习训练。一般用平均数或中位数代替缺失的值。Imputer类可以完成这个任务。

Imputer类提供了使用缺失值所在的行或列的均值、中值或最频繁值来替代缺失值的基本策略。此类还允许其他不同的缺失值编码。

from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
imputer = imputer.fit(X[:,1:3])
X[:,1:3] = imputer.transform(X[:,1:3])

Step 4:编码分类数据

分类数据往往是字符而不是数字。分类数据可能的值一般是有限的。例子中的Yes和No由于不是数字,不能参加数字运算,所以我们需要将其转为数字。我们导入LabelEncoder库,实现这个转换。

  • LabelEncoder: 编码值介于0和n_classes-1之间的标签,还可用于将非数字标签(只要它们可比较)转换为数字标签。
  • OneHotEncoder: 使用K-K方案对分类整数特征进行编码。
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:,0] = labelencoder_X.fit_transform(X[:,0])

创建虚拟变量

有时候,特征不是连续值而是分类。例如,一个人可能具有如下特征:[“男性”,“女性”],[“来自欧洲”,“来自美国”,“来自亚洲”],[“使用Firefox”,“使用Chrome”,“使用Safari”, “使用Internet Explorer”]。这些特征可以编码为整数,例如[“男性”,“来自美国”,“使用Internet Explorer”]可以表示为[0,1,3],而[“女性”,“来自亚洲”,“使用Chrome“]将是[1,2,1]。

这样的整数不能直接与scikit-learn估计器一起使用,因为它们期望连续输入的值,并且将类别解释为有序的,这通常是我们不期望的(即,浏览器集是任意排序的)。

将分类特征转换为可与scikit-learn估计器一起使用的特征的一种方法,是使用OneHotEncoder实现的K或热编码。该估计器将每个具有m个可能值的分类特征转换为m个二进制特征,其中只有一个是有效的。

onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)

Step 5:分类训练和测试数据

我们将数据分成两部分,一部分用于训练模型,被成为训练集,另一部分用于测试训练模型的性能,我们称之为测试集。一般来说,区分训练集和测试集遵从80/20原则。

from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)

Step 6:特征标准化

绝大多数机器学习算法在计算中使用欧几里德几何计算两点之间的距离,特征值对量级、单位、取值范围高度依赖。在距离计算时,高数量级特征比低数量级特征有更高的权重。我们用特征标准化或Z分布解决这个问题。

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.fit_transform(X_test)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Step 1:导入库
  • Step 2:导入数据
  • Step 3:处理缺失数据
  • Step 4:编码分类数据
    • 创建虚拟变量
    • Step 5:分类训练和测试数据
    • Step 6:特征标准化
    相关产品与服务
    文件存储
    文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档