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

news2024/12/26 10:49:02

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
from sklearn.preprocessing import LabelEncoder, OneHotEncoder

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

# 使用 ColumnTransformer 类指定对第一个特征列进行独热编码,并将其与 OneHotEncoder 相关联。
ct = ColumnTransformer([('encoder', OneHotEncoder(), [0])], remainder='passthrough')#new
# 对第一列进行One-Hot编码转为二进制特征,[0]表示对第一列编码
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)
#Y变成[0 1 0 0 1 1 0 1 0 1]

  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)
# 数据集分成训练集和测试集
# 分的比例8:2
# X特征矩阵,Y目标变量,random_state随机种子,确保每次运行得到相同的训练集和测试集


在这里插入图片描述

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

### 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)

# 使用欧几里得距离 x' = (x-min(x))/(max(x)-min(x))
# 将特征矩阵的值缩放到相似的范围,避免某些特征对模型的影响过大

在这里插入图片描述

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

请添加图片描述

请添加图片描述

#!/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)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/727238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

flutter 更新分支内容

有三个分支,主分支,A分支,B分支,别人在B分支开发了内容,我在A分支进行开发。别人在B分支提交了代码,让我去拉下来。这时候我就是需要切到B分支,拉代码下来,然后再回到A分支&#xff…

python使用代理ip——案例

python爬虫是指使用Python编写的程序,通过网络爬取信息并提取有效数据。它通过模拟浏览器请求,获取网页数据,并通过解析HTML/XML等文档结构,从中提取数据。 Python爬虫常用的库和工具包括: Requests:用于…

Lightroom Classic 2023(12.4) for Mac

Lightroom Classic是一款图像处理软件,是数字摄影后期制作的重要工具之一。与其他图像处理软件相比, Lightroom Classic具有以下特点: 高效的图像管理:Lightroom Classic提供了强大的图像管理功能,可以轻松导入、整理…

Springboot接口返回参数以及入参RSA加密解密

网上有好多通过aop切面以及自定义的RSA工具类进行加密解密的方法,期中的过程繁琐也不好用,博主研究了一天从网上到了超好用的基于Springboot框架实现的接口RSA加密解密方式,通过rsa-encrypt-body-spring-boot实现了对Spring Boot接口返回值、…

MySQL库表操作

目录 1、SQL语句分类 2、书写规范 (二)关键字不区分大小写 (三)字符串和日期时间常数要用单引号 (四)单词之间需要使用半角空格或者换行符进行分隔 (五)注释 3、库操作 创建…

关于PHP 使用 Elastic Search8的相关经历

你好! 如果你也是第一次使用ES8和PHP对接使用,这里或许有一些心得可以为你解决一些问题。 本地环境所需工具 windows 版本搭建 Elastic Search 如下图,通过官网下载一个windows版本的Elastic Search 执行.bat文件即可启动 https://localhos…

基于OpenCV 和 Python 实现车牌检测--附免费源码

文末提供免费的源代码下载链接 车牌检测是使用计算机视觉技术自动检测和识别图像或视频流中的车牌/车牌的过程。 此任务在许多应用中都很有用,例如交通管理、自动收费和停车控制。 车牌检测基本上分为两个任务: 车牌检测:这是指识别图像或视频帧中车牌位置的过程。这涉…

优化篇--vxe-table 大数据表格替代方案

解决数据量过大及内容复杂时造成的Table渲染滚动的卡顿问题 vxe-table官方文档 npm install xe-utils vxe-tablelegacyvex-table.vue <template><div class"page"><vxe-gridclass"mytable"ref"xGrid2"v-bind"gridOptions2&…

langchain系列1- langchain-ChatGLM

源码阅读 1 服务启动 (demo.queue(concurrency_count3).launch(server_name0.0.0.0,server_port7860,show_apiFalse,shareFalse,inbrowserFalse))这部分代码使用了 Gradio 库提供的两个函数&#xff1a;queue 和 launch。 在这里&#xff0c;demo 是一个 Interface 类的实例…

win go vscode安装配置-智能提示

win go vscode安装配置-智能提示 0.前提 go1.17.1之后不允许go get安装库 vscode是免费的go开发工具&#xff0c;想要代码智能提示 go推荐go mod和go install&#xff0c;不推荐GOPATH了 1.安装步骤 [1] vscode安装-百度一堆 [2] go安装-从官网 https://go.dev/dl/ 下载win 6…

SpringBoot——在开发阶段对表现层进行测试

在开发阶段对表现层进行测试 之前在做测试的时候&#xff0c;我们对Dao层做了测试&#xff0c;对Service层做了测试&#xff0c;但是在测试表现层的时候&#xff0c;我们并不是在测试类中启动的Web端口&#xff0c;还是直接启动了引导类&#xff0c;并在浏览器中打开本地网址或…

优思学院|带你轻松驾驭六西格玛:解答大家的五大疑问

在业务改进和质量管理领域&#xff0c;六西格玛被公认为一种卓越的方法和工具&#xff0c;可以帮助企业实现接近完美的质量水平。无论是制造业、医疗保健、金融还是服务行业&#xff0c;六西格玛都被广泛采用&#xff0c;并取得了令人瞩目的成果。它不仅可以降低缺陷和错误&…

【IoT物联网】IoT小程序在展示中央空调采集数据和实时运行状态上的应用

利用前端语言实现跨平台应用开发似乎是大势所趋&#xff0c;跨平台并不是一个新的概念&#xff0c;“一次编译、到处运行”是老牌服务端跨平台语言Java的一个基本特性。随着时代的发展&#xff0c;无论是后端开发语言还是前端开发语言&#xff0c;一切都在朝着减少工作量&#…

基于知识图谱的《红楼梦》人物关系可视化及问答系统(含码源):命名实体识别、关系识别、LTP简单教学

基于知识图谱的《红楼梦》人物关系可视化及问答系统&#xff08;含码源&#xff09;&#xff1a;命名实体识别、关系识别、LTP简单教学 文件树: app.py是整个系统的主入口templates文件夹是HTML的页面 |-index.html 欢迎界面 |-search.html 搜索人物关系页面 |-all_relation.…

JMeter参数化(6)

JMeter参数化 一、JMeter用户参数1、作用2、案例1&#xff1a;百度搜索接口&#xff1a;使用用户参数模拟不同线程操作时&#xff0c;搜索不同的数据 二、用户自定义变量案例1&#xff1a;演示用户定义的变量具有全局性案例2&#xff1a;使用用户定义的变量&#xff0c;分组管理…

基于Java的电影购票系统的设计与实现(源码+文档+数据库)

本系统是一个网上电影售票系统&#xff0c;可以为用户提供方便的在线订票环境。主要实现了用户注册、登录、查询、订购电影票、管理已订购电影票等功能。通过后台管理模块可以实现对用户、播放厅、电影、影片安排、电影票等的管理等功能。本系统以IntelliJ IDEA 作为开发环境&a…

2.3 Web应用 -- 2. HTTP 连接

2.3 Web应用 -- 2. HTTP 连接 HTTP连接的两种类型非持久性连接响应时间分析与建模持久性HTTP HTTP连接的两种类型 非持久性连接(Nonpersistent HTTP) 每个TCP连接最多允许传输一个对象HTTP 1.0版本使用非持久性连接 持久性连接(Persistent HTTP) 每个TCP连接允许传输多个对象H…

vue3项目创建部署

别名联想路径提示&#xff1a; Element-plus默认的颜色是蓝色&#xff0c;以下修改成我们自己的主题色&#xff1a; css预处理语言 “scss是一种css预处理语言,是一个css的扩展,它在css语法的基础上,允许您使用变量,嵌套规则,混合,导入,继承等功能,使得css更加强大和优雅,而…

Jetson Orin Nano Developer Kit

Jetson Orin Nano Developer Kit包括Jetson Orin Nano 8GB模块&#xff0c;该模块具有NVIDIA安培GPU(具有1024个CUDA内核和32个第三代张量内核)和6核ARM CPU&#xff0c;能够运行多个并发AI应用程序管道并提供高推断性能。 开发套件载体板支持所有Jetson Orin Nano和Orin NX模块…

2023年如何通过8个步骤创建社交媒体内容策略

在创建成功的社交媒体内容策略时&#xff0c;感觉有无穷无尽的选项和平台可供选择。但不要因此而不知所措&#xff0c;因为只要稍作规划并发挥大量创造力&#xff0c;您就可以制定有助于提升品牌知名度、提高客户参与度和推动销售的战略。 目录 定义社交媒体内容配方的八个…