[github-100天机器学习]day1 data preprocessing-版本问题已修正

这篇具有很好参考价值的文章主要介绍了[github-100天机器学习]day1 data preprocessing-版本问题已修正。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

https://github.com/LiuChuang0059/100days-ML-code/blob/master/Day1_Data_preprocessing/README.md#step-6-feature-scaling—特征缩放

数据预处理

  1. 导入库:numpy包含数学计算函数,pandas用于导入和管理数据集
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Aug  6 02:15:40 2018

@author: liuchuang
"""

### Step 1: Importing the libraries

import numpy as np
import pandas as pd

  1. 导入数据集:用pandas的read_csv方法读本地csv为数据帧

### Step 2: Importing dataset

dataset = pd.read_csv('Data.csv')
# iloc 方法的索引是基于位置的,而不是基于标签的
X = dataset.iloc[ : , :-1].values
# 使用 Pandas 库中的 iloc 方法从数据集中提取特征(自变量)的部分
# 通过 iloc 方法可以按照索引位置来选择数据。
# 在这里,: 表示选择所有的行,-1 表示选择除了最后一列之外的所有列。
# .values 用于将结果转换为 NumPy 数组
Y = dataset.iloc[ : , 3].values #选择索引为 3 的列
  1. 处理丢失数据:替换nan值,用sklearn.preprocessing库的Imputer类
### Step 3: Handling the missing data
### 使用整列的中位数或者平均值表示缺失值

from sklearn.impute import SimpleImputer   #new
#from sklearn.preprocessing import Imputer   #old-教程里的

# 从 Scikit-learn 0.22 版本开始,Imputer 类已被 SimpleImputer 类取代

# 使用sklearn.preprocessing 中的 Imputer类
imputer = SimpleImputer(missing_values=np.nan, strategy='mean') #new
# 使用均值mean来填充缺失值,其他方法: median(中位数)、most_frequent(最频繁值)
# imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0) #old
imputer = imputer.fit(X[ : , 1:3])
# 使用 fit 方法将 SimpleImputer 对象适应(fit)到数据集的指定列
# X[:, 1:3] 表示选取数据集 X 的所有行(:),以及列索引为 1 到 2(不包括索引 3)的列(1:3)
X[ : , 1:3] = imputer.transform(X[ : , 1:3])
# 使用 transform 方法将填充后的数据替换原始数据集中指定的列
# imputer 对象将使用之前计算得到的填充信息来填充 X 数据集中选定的列,将缺失值替换为填充值

  1. 解析分类数据:把标签值解析为数字,sklearn.preprocessing库导入LabelEncoder类
### step4: Encoding categorical data

#对数据集中的特征进行编码,其中包括标签编码和独热编码
from sklearn.compose import ColumnTransformer   #new
# ColumnTransformer用于进行列变换

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
# LabelEncoder用于标签编码,和OneHotEncoder用于独热编码
# 对第一个特征列进行标签编码
labelencoder_X = LabelEncoder()     # 使用 LabelEncoder 对第一个特征列进行标签编码
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])#将label值转换为数值
labelencoder_X = LabelEncoder()     
# 使用 LabelEncoder 对第一个特征列进行标签编码,将类别值转换为数值
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])
# 对数据集X的第一个特征列(索引0)进行标签编码,将该列中的类别值转换为数值

# 使用 ColumnTransformer 类指定对第一个特征列进行独热编码,并将其与 OneHotEncoder 相关联。
ct = ColumnTransformer([('encoder', OneHotEncoder(), [0])], remainder='passthrough')#new
X = ct.fit_transform(X)#new
#onehotencoder = OneHotEncoder(categorical_features = [0])#old
#X = onehotencoder.fit_transform(X).toarray()    #old
# 使用ColumnTransformer将第一个特征列进行独热编码。
# ColumnTransformer允许你在数据集中的不同列上应用不同的数据预处理步骤
# 在这里,我们指定要对索引为0的列应用OneHotEncoder进行独热编码,
# 并通过remainder='passthrough'选项保留其余的列不变。
# 最后,fit_transform方法将应用所选的数据预处理步骤,并更新数据集X。

#对目标变量进行标签编码
labelencoder_Y = LabelEncoder()
Y =  labelencoder_Y.fit_transform(Y)

# 标签编码将类别转换为数值
# 独热编码则将这些数值表示为二进制向量,以避免模型错误地将类别之间的关系当作连续关系

  1. 拆分dataset为test和training:一个训练一个测试(8:2),sklearn.crossvalidation库的train_test_split()方法
### Step 5: Splitting the datasets into training sets and Test sets


from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)
# X是包含特征的数据集。
# Y是包含目标变量(标签)的数据集。
# test_size指定了测试集的大小,表示将20%的数据分配给测试集,而80%的数据用于训练集
# random_state是一个随机种子,用于确保每次运行代码时得到相同的随机分割
# 返回:X_train:训练集的特征数据。X_test:测试集的特征数据。
# Y_train:训练集的目标变量数据。Y_test:测试集的目标变量数据


[github-100天机器学习]day1 data preprocessing-版本问题已修正,ML100day,github,机器学习,人工智能

  1. 特征缩放:sklearn.preprocessing库的StandardScalar类

### Step 6: Feature Scaling---特征缩放


from sklearn.preprocessing import StandardScaler
# 对特征进行标准化(特征缩放)

# 标准化是一种常见的数据预处理步骤,它有助于确保不同特征具有相似的尺度,以改善机器学习模型的性能。

sc_X = StandardScaler() #对特征矩阵进行特征缩放
# 创建了一个StandardScaler对象,用于对特征进行标准化
X_train = sc_X.fit_transform(X_train)
# 使用fit_transform方法将训练集X_train中的特征进行标准化
# 计算特征的均值和标准差,并将每个特征进行标准化,使其具有零均值和单位方差
X_test = sc_X.fit_transform(X_test)
# 使用fit_transform方法将测试集X_test中的特征进行标准化

# 使用相同的标准化器对象来对训练集和测试集进行标准化,
# 以确保它们使用相同的均值和标准差进行标准化,从而保持数据的一致性。

# 标准化后的特征具有零均值和单位方差,这有助于确保不同特征之间的尺度差异不会对机器学习模型的性能产生负面影响

[github-100天机器学习]day1 data preprocessing-版本问题已修正,ML100day,github,机器学习,人工智能

csv数据集
Country,Age,Salary,Purchased
France,44,72000,No
Spain,27,48000,Yes
Germany,30,54000,No
Spain,38,61000,No
Germany,40,,Yes
France,35,58000,Yes
Spain,,52000,No
France,48,79000,Yes
Germany,50,83000,No
France,37,67000,Yes

数据帧(Data Frame) 二维的表格形式,类似于电子表格或关系型数据库中的表。数据帧通常被用来存储和操作结构化数据。数据以行和列的形式组织。每一列代表一个变量,每一行代表一个观察或数据点。

例子:

data = {
    'Name': ['John', 'Emma', 'Mike', 'Lisa'],
    'Age': [28, 24, 32, 29],
    'City': ['New York', 'San Francisco', 'Chicago', 'Los Angeles']
}

df = pd.DataFrame(data)

# 打印数据帧
print(df)

# 输出:
#    Name  Age           City
# 0  John   28       New York
# 1  Emma   24  San Francisco
# 2  Mike   32        Chicago
# 3  Lisa   29    Los Angeles

[github-100天机器学习]day1 data preprocessing-版本问题已修正,ML100day,github,机器学习,人工智能

[github-100天机器学习]day1 data preprocessing-版本问题已修正,ML100day,github,机器学习,人工智能文章来源地址https://www.toymoban.com/news/detail-529337.html

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Aug  6 02:15:40 2018

@author: liuchuang
"""

### Step 1: Importing the libraries

import numpy as np
import pandas as pd


### Step 2: Importing dataset

dataset = pd.read_csv('Data.csv')
# iloc 方法的索引是基于位置的,而不是基于标签的
X = dataset.iloc[ : , :-1].values
# 使用 Pandas 库中的 iloc 方法从数据集中提取特征(自变量)的部分
# 通过 iloc 方法可以按照索引位置来选择数据。
# 在这里,: 表示选择所有的行,-1 表示选择除了最后一列之外的所有列。
# .values 用于将结果转换为 NumPy 数组

Y = dataset.iloc[ : , 3].values #选择索引为 3 的列


### Step 3: Handling the missing data
### 使用整列的中位数或者平均值表示缺失值

from sklearn.impute import SimpleImputer   #new
#from sklearn.preprocessing import Imputer   #old-教程里的

# 从 Scikit-learn 0.22 版本开始,Imputer 类已被 SimpleImputer 类取代

# 使用sklearn.preprocessing 中的 Imputer类
imputer = SimpleImputer(missing_values=np.nan, strategy='mean') #new
# 使用均值mean来填充缺失值,其他方法: median(中位数)、most_frequent(最频繁值)
# imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0) #old
imputer = imputer.fit(X[ : , 1:3])
# 使用 fit 方法将 SimpleImputer 对象适应(fit)到数据集的指定列
# X[:, 1:3] 表示选取数据集 X 的所有行(:),以及列索引为 1 到 2(不包括索引 3)的列(1:3)
X[ : , 1:3] = imputer.transform(X[ : , 1:3])
# 使用 transform 方法将填充后的数据替换原始数据集中指定的列
# imputer 对象将使用之前计算得到的填充信息来填充 X 数据集中选定的列,将缺失值替换为填充值


### step4: Encoding categorical data


from sklearn.compose import ColumnTransformer   #new

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

# 对第一个特征列进行标签编码
labelencoder_X = LabelEncoder()     
# 使用 LabelEncoder 对第一个特征列进行标签编码,将类别值转换为数值
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])

# 使用 ColumnTransformer 类指定对第一个特征列进行独热编码,并将其与 OneHotEncoder 相关联。
ct = ColumnTransformer([('encoder', OneHotEncoder(), [0])], remainder='passthrough')#new
X = ct.fit_transform(X)#new
#onehotencoder = OneHotEncoder(categorical_features = [0])#old
#X = onehotencoder.fit_transform(X).toarray()    #old
# 使用 ColumnTransformer 来代替过时的 categorical_features 参数,以实现对指定列的独热编码


#对目标变量进行标签编码
labelencoder_Y = LabelEncoder() #使用 LabelEncoder 对目标变量进行标签编码
Y =  labelencoder_Y.fit_transform(Y)


### Step 5: Splitting the datasets into training sets and Test sets


from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)
# 数据集分成训练集和测试集
# 分的比例通常 8:2
# 使用sklearn.cross_validation 中 train_test_split 类


### Step 6: Feature Scaling---特征缩放

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.fit_transform(X_test)

# 使用欧几里得距离
# 特征与 标度有关,一个特征比其他的特征范围更大 该特征值成为主导

到了这里,关于[github-100天机器学习]day1 data preprocessing-版本问题已修正的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【100天精通python】Day1:初识python,搭建python环境,运行第一个python小程序

    【100天精通python】Day1:初识python,搭建python环境,运行第一个python小程序

     目录 专栏导读  1 初始python python 概述 python的应用领域   应用python的公司  2 搭建python 开发环境  2.1 安装python(以windows 系统为例)(1)下载安装包  (2) 下载保存后打开文件夹点击以管理员身份运行  (3)选择自定义安装,同时将add python3.9 to path勾上。  (4)测试

    2024年02月16日
    浏览(9)
  • 【100天精通Python】Day76:Python机器学习-第一个机器学习小项目_鸾尾花分类项目,预测与可视化完整代码(下)

    【100天精通Python】Day76:Python机器学习-第一个机器学习小项目_鸾尾花分类项目,预测与可视化完整代码(下)

    目录 5 模型实现 5.1 分离出评估数据集 5.2 创建不同的模型来预测新数据 5.3 采用10折交叉验证来评估算法模型 5.4 生成最优模型 6 实施预测 7 模型评估 8 完整代码 (1)鸾尾花分类的完整代码 (2)可视化不同模型预测的评估结果    通过不同的算法来创建模型,并评估它们的

    2024年02月05日
    浏览(8)
  • 【100天精通python】Day1:python入门_初识python,搭建python环境,运行第一个python小程序

    【100天精通python】Day1:python入门_初识python,搭建python环境,运行第一个python小程序

     目录 专栏导读  1 初始python python 概述 python的应用领域   应用python的公司  2 搭建python 开发环境  2.1 安装python(以windows 系统为例)(1)下载安装包  (2) 下载保存后打开文件夹点击以管理员身份运行  (3)选择自定义安装,同时将add python3.9 to path勾上。  (4)测试

    2024年02月15日
    浏览(12)
  • UWB学习——day1

    UWB学习——day1

    UWB:Ultra Wideband(超宽频) UWB所谓的超宽频区别于其它近场通信技术可总结为 时域上跳跃,频域上矮胖 从图中可以看出,时域上通过短且强的脉冲信号,频域上主要是超宽的频谱(Spectrum) 调制(Modulation):把信号进行编码使其方便传播的过程 PPM 通过在 固定时间范围 内改

    2024年02月09日
    浏览(9)
  • 前端学习——ajax (Day1)

    前端学习——ajax (Day1)

    axios 使用 练习 练习 案例 axios 错误处理 https://apifox.com/apidoc/shared-1b0dd84f-faa8-435d-b355-5a8a329e34a8 url好像失效了

    2024年02月16日
    浏览(10)
  • Nodejs前端学习Day1

    Nodejs前端学习Day1

    妈的,这几天真tm冷,前天上午还下了一整天的雪,大雪 妈的,昨天没学,上午练车去了,下午就当了一下午废物,操,真是个废物。 现在官网的描述: 学习视频中的描述(旧版本): 如果我们写了一段js放到浏览器中运行则证明在做前端开发 如果我们写了一段js放到node

    2024年01月25日
    浏览(8)
  • 学习JavaSE基础-day1

    学习JavaSE基础-day1

    JRE 和 JDK JRE:Java运行环境,如果想要运行Java程序至少要安装JRE JDK:Java开发环境(开发工具包),如果要开发Java程序,必须安装JDK JRE = JVM + 核心类库 JDK = JRE + 开发工具包 JDK JRE JVM 关系如图所示:     JDK下载地址:www.oracle.com 配置Path环境变量:希望可以在命令窗口的任意的

    2024年02月07日
    浏览(11)
  • 【剑指offer】学习计划day1

    【剑指offer】学习计划day1

    目录 一. 前言  二. 用两个栈实现队列         a.题目          b.题解分析           c.AC代码   二. 包含min函数的栈          a.题目          b.题解分析         c.AC代码   本系列是针对Leetcode中剑指offer学习计划的记录与思路讲解。详情查看以下链接: 剑指offer-学

    2023年04月24日
    浏览(11)
  • 前端学习——JS进阶 (Day1)

    前端学习——JS进阶 (Day1)

    局部作用域 全局作用域 作用域链 JS垃圾回收机制 闭包 变量提升 函数提升 函数参数 动态参数 剩余参数 展开运算符 箭头函数(重要) 基本写法 箭头函数参数 箭头函数 this 数组解构 练习 数组解构 对象解构 多级对象解构 for each 案例 筛选

    2024年02月16日
    浏览(11)
  • freertos内核原理学习 Day1(链表)

    freertos内核原理学习 Day1(链表)

    目录 1.freertos列表与列表操作 1.1链表各节点定义(头文件list.h中) 1.1.1普通节点定义 1.1.2mini节点定义 1.1.3根节点定义 1.2链表操作(源文件list.c中) 1.2.1链表节点初始化  1.2.2链表根节点初始化   1.2.3插入节点到链表尾部   1.2.4将节点按“升序”排列后插入到链表中   1.2.

    2024年01月23日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包