逻辑回归--数据独热编码+数据结果可视化

本文深入探讨逻辑回归模型,重点介绍如何使用数据独热编码处理特征,并通过可视化工具展示数据分布和模型预测结果,帮助读者更好地理解和应用逻辑回归。
摘要由CSDN通过智能技术生成
#-*- coding: utf-8 -*-
'''
在数据处理和特征工程中,经常会遇到类型数据,如性别分为[男,女](暂不考虑其他。。。。),手机运营商分为[移动,联通,电信]等,我们通常将其转为数值带入模型,如[0,1], [-1,0,1]等,但模型往往默认为连续型数值进行处理.
独热编码便是解决这个问题,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。
可以理解为对有m个取值的特征,经过独热编码处理后,转为m个二元特征(值只有0和1),每次只有一个激活。
基于树的方法是不需要进行特征的归一化,例如随机森林,bagging 和 boosting等。基于参数的模型或基于距离的模型,都是要进行特征的归一化。
@author: soyo
'''
import pandas as pd
import numpy
import matplotlib.pylab as pl  
from sklearn.linear_model import LogisticRegression 
from sklearn.cross_validation import train_test_split
from sklearn.utils.extmath import cartesian

#numpy.set_printoptions(threshold=numpy.inf)  #目的是将print省略的部分都输出
data=pd.read_csv("/home/soyo/文档/LogisticRegression.csv")
print data
print data.head(5)
data_dum=pd.get_dummies(data,prefix='rank',columns=['rank'],drop_first=True) #类别型变量进行独热编码,drop_first=True:删掉了本该有的rank_1
print data_dum.head(5)
print "*********************"
print data_dum.ix[:,1:].head(5)
print data_dum.ix[:,0].head(5)
x_train,x_test,y_train,y_test=train_test_split(data_dum.ix[:,1:],data_dum.ix[:,0],test_size=0.1,random_state=1)  #x:代表的是数据特征,y:代表的是类标(lable),都被随机的拆分开做交叉验证
print len(x_train),len(x_test)
print x_train
numpy.savetxt('/home/soyo/文档/new.csv', x_train,fmt="%d", delimiter = ',')  
print len(y_train),len(y_test)
numpy.savetxt('/home/soyo/文档/new2.csv', y_train,fmt="%d", delimiter = ',')  
print y_train
print "***********"
print y_test
lr=LogisticRegression()
lr.fit(x_train,y_train)
print "预测结果:"
print lr.predict(x_test)
print "真实label:"
print  numpy.array(y_test)
print "逻辑回归的准确率为:{0:.3f}%".format(lr.score(x_test, y_test))
print "根据组合数据分析数据之间的关系"
gres=numpy.linspace(data['gre'].min(),data['gre'].max(),20)
print gres
gpas=numpy.linspace(data['gpa'].min(),data['gpa'].max(),20)
print gpas
# numpy.set_printoptions(threshold=numpy.inf)  #目的是将print省略的部分都输出
print cartesian([gres,gpas,[1,2,3,4],[1.]])    #数据组合:组合后的总个数->20*20*4*1=1600个
data_new=pd.DataFrame(cartesian([gres,gpas,[1,2,3,4],[1.]]))
print data_new
data_new.columns=['gre','gpa','ranks','intercept']
print data_new
dummy_ranks=pd.get_dummies(data_new['ranks'],prefix='ranks') #prefix:前缀名
# print dummy_ranks
dummy_ranks.columns=['ranks_1','ranks_2','ranks_3','
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值