机器学习Python实战
库导入
python三大件
np : 数据计算 pd : 数据库 plt : 画图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
图形可视化库:sns
import seaborn as sns
教程链接:https://zhuanlan.zhihu.com/p/49035741
算法模型库:sklearn
from sklearn.ensemble import RandomForestClassifier
数据导入
-
pandas库用于读入原始数据
path = 'LogiReg_data.txt' pdData=pd.read_csv(path, header=None,names=['Exam1','Exam2','Admitted']) pdData.head()
数据命名
- 训练集 train_data
- 测试集 test_data
- 处理过后 通常将train_data赋值给X, test_data赋值给X_test
- 目标结果集 target
训练集 | 测试集 | 目标值 |
---|---|---|
train_data | test_data | target |
X | X_test | y |
随机划分数据集
sklearn库中的
train_test_split()
函数随机划分训练集和测试集X_train,x_test = train_test_split(x) X_train, X_test, y_train, y_test = train(X,y, random_state = 0)
- random_state: 随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。
- 每次都填1,其他参数一样的情况下得到的随机数组是一样的。
- 填0或不填,每次都会不一样。
数据预处理
缺失值处理
使用pandas中的
fillna()
函数填充NaN空缺值
- 通常情况下,可以填充为0
- 但比如年龄这类数值不建议填充为0时,将其填充为一个无意义数值,如:-1
X = pd.get_dummies(train_data[features].fillna(-1)) X_test = pd.get_dummies(test_data[features].fillna(-1))
使用Pandas中
dropna(axis=0)
函数直接去除缺失值所在记录
- 比如训练数据的目标值值缺失时,y为NaN, 可以直接扔掉该记录
- axis:轴。
- 0或’index’,表示按行删除;
- 1或’columns’,表示按列删除。
filtered_data = origin_data.dropna(axis=0)
非数值型属性处理
-
将分类型字符串转换为数值
-
离散化独热编码one-hot
pd.get_dummies(train_data[])
有几种属性状态就生成几列0-1判别值,是该类为1,其他列全为0,实现以数字分类
如:Sex属性状态有:male、female
分别分为两列:Sex_male、Sex_female
通过列内0-1取值实现数值化字符串
原创文章,作者:dweifng,如若转载,请注明出处:https://blog.ytso.com/275938.html