该项目是补课班老师留的作业,比较简单,用来练手,熟悉流程
适合机器学习初学者来实践
#如何判断某些属性和特征与结果是否关联
#首先通过相关人员进行简单筛选,也可以通过画图和求相关系数来发现
#例如,通过画age与最终贷款的柱状图,如果各个年龄下,差别不大,证明年龄关系不大,可以去掉。
#某个特征如果单独来看,和最终结果关系不大,它与其他的特征组合也不会有影响,因此可以不用考虑这种情况
#关于one-hot编码,当离散特征的大小没有做特殊要求时,即做范式平方差的时候不会有差异。
#本例中,暂不认为教育之间有差距,所以采用one-hot编码映射各个教育程度。
#利用one-hot处理后维度会变多,即本来为一个housing特征变成housing-yes,housing-no,housing-unknown三个特征。
#注,logistic回归不是利用距离计算,所以其实可以采用1,2,3数值去表示,只是习惯上在不确定的条件下采用one-hot编码去做。
#数值之间的比例无法确定。只能通过业务确定,或者自己摸索着去调。(其他维度相同,只有待测特征不同,看差距)
#关于连续数据离散化:一般情况下,原数据什么样就是什么样,不用转化成离散型。
#例如年龄特征一般就是连续型,不用再多加处理变成离散型;除非是有些算法不支持连续型(如决策树)。
#导入包
import pandas as pd
import numpy as np
from sklearn import preprocessing #数据预处理
import matplotlib.pyplot as plt #做图工具
from sklearn.linear_model import LogisticRegression #logisticregression 算法
from sklearn.cross_validation import train_test_split #交叉验证,随机选取训练集和测试集
# 读入数据,做数据分析,CSV格式用的最多,非常适合存储数据。
#pandas.read_csv,读取CSV(逗号分割)文件到DataFrame
#常用的函数只有两个,sep(表示指定分割符)和header(表示数据表头,默认是0)。
#sep : str, default ‘,’;指定分隔符,如果不指定参数,则会尝试使用逗号分隔。
#header:指定行数用来作为列名,数据开始行数。如果文件中有列名,则默认为0,否则设置为None,表示不要把第一行作为header。
data = pd.read_csv('banking.csv', header=0)
# 去掉缺失数据,.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)[source]
#主要看axis和how。#一般情况下,先进性填充,再采用dropna,否则删除样本过多
#0表示删除行,1表示删除列(一般不会,因为会删除掉一个属性);
#how默认any,any-有一个缺失,则丢掉,all-全部缺失才丢掉。
data = data.dropna()
print(data.shape)
print(list(data.columns)) #输出各个列的名字
# 预览数据,前五行;与之对应的是tail(x)函数,预览后x行
data.head()
# 探索数据情况,利用unique看离散数据有哪些可选值。
data['education'].unique()
#