""" 特征数据预处理: 1.读取数据 2.输出数据列,查看数据类型 3.将每列非数值型或对象类型不是float的进行数据类型转换 4.针对缺失值,采用数值填充法 5.若特征属性维度较多,采用特征降维方式处理 6.进行数组型的X,Y数据选取 7.数据拆分 8.实例化一个逻辑回归器 9.进行数据训练 10.数据预测 11.打分 12.画图 """ import numpy as np import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt import random import sys # 1.数据读取 datas = pd.read_csv('E:/XX/机器学习课程/特征工程数据预处理/crx.data', header=None) datas.replace('?', np.nan, inplace=True) # 丢掉空值 datas = datas.dropna() datas[1] = datas[1].astype(np.float) print(datas.info) print('\n') print(datas) X = datas.iloc[:,:-1] Y = datas.iloc[:, -1] print('\n') # print(X) # print(Y) X[1] = X[1].replace('?', 20.00) Y = Y.replace('+', 0) Y = Y.replace('-', 1) print(Y) # 哑编码只对非数值型转化成数值 X = pd.get_dummies(X) print(X.columns) # 对X,Y进行数据集拆分 x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.3, random_state=10) # 创建逻辑回归器进行训练 Logis = LogisticRegression(penalty='l2') # 训练 Logis.fit(x_train, y_train) # 得到预测值 ypre = Logis.predict(x_test) # 打分 print(Logis.score(x_test, y_test)) # 0.8469387755102041 # 画图 plt.scatter(range(len(x_test)), y_test, c='r', s=10, zorder=5, label='true') plt.scatter(range(len(x_test)), ypre, c='b', s=10, zorder=5, label='predict') plt.show()
特征预处理案例
于 2022-09-26 20:09:30 首次发布