pandas多次尝试始终安装失败 安装了完整版的python3.8依然安装失败
找了个集成版 Anaconda
找了张流程图
机器学习过程
找了个学习资源 https://github.com/Avik-Jain/100-Days-Of-ML-Code / 中文版
跟着他走两步 运行代码发现他的部分内容已经过期 下面笔记中已修改
Day1 数据预处理
导入 numpy => 包含大量基础函数(数学 矩阵 多维数组)
导入 pandas => 基于numpy的数据分析处理库
import numpy as np
import pandas as pd
从csv读数据
dataset = pd.read_csv('Data.csv')
dataset 的数据结构叫 DataFrame 简单直观理解为csv表格 下面的操作就是对表格行和列的操作
表格顶上那行叫标签 最左边一列也可以有标签
Country | Age | Salary | Purchased |
---|---|---|---|
France | 44.0 | 72000.0 | No |
Spain | 27.0 | 48000.0 | Yes |
Germany | 30.0 | 54000.0 | No |
Spain | 38.0 | 61000.0 | No |
Germany | 40.0 | NaN | Yes |
France | 35.0 | 58000.0 | Yes |
Spain | NaN | 52000.0 | No |
France | 48.0 | 79000.0 | Yes |
Germany | 50.0 | 83000.0 | No |
France | 37.0 | 67000.0 | Yes |
这个例子是分析 国家,年龄,收入(自变量) 和 是否已购买(因变量) 关系
下面的操作是把表格分成了两份 X是前3列(自变量) Y是最后一列(因变量)
切片(冒号是切片 ) 简单理解为 数组[从索引x(空就是0) : 切到索引y-1(例如y是3就切到2不包括3 空就是切到最后) ]
iloc逗号前面的切片是切行 逗号后面的切片是切列 values是只要数据不要标签(label)
X = dataset.iloc[ : , : -1].values #0到max行(所有行) 的 0到-1索引列(不含-1 就是除了最后一列的所有列)
Y = dataset.iloc[ : , 3].values #所有行 的 索引为3的列
sklearn => 数据挖掘和数据分析工具
处理丢失数据
sklearn 工具包里的 Imputer 类 => 通过策略来补齐缺失数据(缺失数据处理器 处理DataFrame)
from sklearn.impute import SimpleImputer
创建策略并补齐(只能处理数字 所以指定了处理1-3索引列)
策略 取平均值mean 中值(1-3-9 3是中)median 众值(出现频率最高的)most_frequent
imputer = SimpleImputer(np.nan, "mean")
X[ : , 1:3] = imputer.fit_transform(X[ : , 1:3])
把所有非数字的数据 编码为数字 LabelEncoder 标签编码 OneHotEncoder 独热编码 参考二
LabelEncoder 标签编码 简单理解就是用0代表a 用1代表b 转换成数值
from sklearn.preprocessing import LabelEncoder
labelencoder_X = LabelEncoder()
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)
OneHotEncoder 对数据进行独热编码 简单理解就是把每一类属性编码然后拼接
如性别 男,女 编码为 男:1,0 女:0,1 再举例 男,女,人妖 男1,0,0 女0,1,0 人妖0,0,1 其它属性类推然后拼接在一起
from sklearn.preprocessing import OneHotEncoder
onehotencoder = OneHotEncoder(categories='auto')
X = onehotencoder.fit_transform(X).toarray()
拆分数据集为 训练集合 和 测试集合
train_test_split(样本特征集(国家,年龄,收入 独热编码), 样本标签(是否已购买)), test_size(抽取多少条样本做测试 0.2->20%), random_state随机数种子)
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)
特征量化
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.fit_transform(X_test)
网友评论