美文网首页
回归HW3-逻辑回归的python实现

回归HW3-逻辑回归的python实现

作者: 在做算法的巨巨 | 来源:发表于2018-07-26 21:24 被阅读0次

在写这篇的时候,其实有两个问题在我的脑海里不停浮现,一个是逻辑回归真正的数学含义,一个是进行逻辑回归之前我需要做的数据预处理。
所谓逻辑回归的数学含义,例如,hypothesis function, cost function,sigmoid function,这些内容都是很久前看的,后面我会陆陆续续把这些补上。
所谓数据预处理,包括普通点的去掉空值,根据需求切片等等,对于逻辑回归而言,比较unique的就是需要我们将数据中的文本数据转化为离散型的数值型数据。至于说,为什么?因为我们要做假设方程的最优化计算,这里的预处理有点类似于朴素贝叶斯中的文本向量化,将文本信息转化为数据矩阵。这里先不说这些了,有时间我会将细节单独写出来。


废话不多说了,上硬货

  • 数据导入

import pandas as pd
import numpy as np
data=pd.read_csv('c:\\PDM\\data.csv'
  • 预处理1---去除空值

data=data.dropna()
  • 预处理2---文本数据转离散型数值数据

这里有两种实现路径。

  1. 通过pandas自带的get_dummies功能,将所有分类扁平化扩张以增加列的形式实现,离散数据按照[0,1]分布。
  2. 人工定义:将每一列的文本信息种类以int值进行标注,最后通过DataFrame的map功能实现。

首先尝试第一种方法,get_dummies

  • 创建需要预处理的列名
  • 遍历每一列都包含的文本内容,取唯一
  • 唯一的文本以列的形式新增,并且数值采用[0,1]分布,并去除一个文本属性
dummyColumns = ['Gender', 'Home Ownership', 'Internet Connection', 'Marital Status','Movie Selector','Prerec Format', 'TV Signal']
for column in dummyColumns:
    data[column]=data[column].astype('category')
dummiesData = pandas.get_dummies(data, columns=dummyColumns,prefix=dummyColumns,prefix_sep=" ",drop_first=True)

尝试第二种方法,人工定义,DataFrame的map功能

educationLevelDict = {
    'Post-Doc': 9,
    'Doctorate': 8,
    'Master\'s Degree': 7,
    'Bachelor\'s Degree': 6,
    'Associate\'s Degree': 5,
    'Some College': 4,
    'Trade School': 3,
    'High School': 2,
    'Grade School': 1
}
dummiesData['Education Level Map'] = dummiesData['Education Level'].map(educationLevelDict)

freqMap = {
    'Never': 0,
    'Rarely': 1,
    'Monthly': 2,
    'Weekly': 3,
    'Daily': 4
}
dummiesData['PPV Freq Map'] = dummiesData['PPV Freq'].map(freqMap)
dummiesData['Theater Freq Map'] = dummiesData['Theater Freq'].map(freqMap)
dummiesData['TV Movie Freq Map'] = dummiesData['TV Movie Freq'].map(freqMap)
dummiesData['Prerec Buying Freq Map'] = dummiesData['Prerec Buying Freq'].map(freqMap)
dummiesData['Prerec Renting Freq Map'] = dummiesData['Prerec Renting Freq'].map(freqMap)
dummiesData['Prerec Viewing Freq Map'] = dummiesData['Prerec Viewing Freq'].map(freqMap)
  • 建立新的矩阵

dummiesSelect = [
    'Age', 'Num Bathrooms', 'Num Bedrooms', 'Num Cars', 'Num Children', 'Num TVs', 
    'Education Level Map', 'PPV Freq Map', 'Theater Freq Map', 'TV Movie Freq Map', 
    'Prerec Buying Freq Map', 'Prerec Renting Freq Map', 'Prerec Viewing Freq Map', 
    'Gender Male',
    'Internet Connection DSL', 'Internet Connection Dial-Up', 
    'Internet Connection IDSN', 'Internet Connection No Internet Connection',
    'Internet Connection Other', 
    'Marital Status Married', 'Marital Status Never Married', 
    'Marital Status Other', 'Marital Status Separated', 
    'Movie Selector Me', 'Movie Selector Other', 'Movie Selector Spouse/Partner', 
    'Prerec Format DVD', 'Prerec Format Laserdisk', 'Prerec Format Other', 
    'Prerec Format VHS', 'Prerec Format Video CD', 
    'TV Signal Analog antennae', 'TV Signal Cable', 
    'TV Signal Digital Satellite', 'TV Signal Don\'t watch TV'
]
inputData = dummiesData[dummiesSelect]
outputData= dummiesData[['Home Ownership Rent']]
  • 导入计算包

from sklearn import linear_model
IrModel = linear_model.LogisticRegression()
IrModel.fit(inputData, outputData)
IrModel.score(inputData,outputData)
  • 进行预测

这里还是需要先对预测数据进行预处理,重复上边预处理的工作

newData = read_csv('C:\\PDM\\newData.csv')
newData = newData.dropna()
for column in dummyColumns:
    newData[column] = newData[column].astype('category', categories=data[column].cat.categories)
dummiesNewData = pandas.get_dummies(newData,  columns=dummyColumns, prefix=dummyColumns, prefix_sep=" ",drop_first=True)
newData['Education Level Map'] = newData['Education Level'].map(educationLevelDict)
newData['PPV Freq Map'] = newData['PPV Freq'].map(freqMap)
newData['Theater Freq Map'] = newData['Theater Freq'].map(freqMap)
newData['TV Movie Freq Map'] = newData['TV Movie Freq'].map(freqMap)
newData['Prerec Buying Freq Map'] = newData['Prerec Buying Freq'].map(freqMap)
newData['Prerec Renting Freq Map'] = newData['Prerec Renting Freq'].map(freqMap)
newData['Prerec Viewing Freq Map'] = newData['Prerec Viewing Freq'].map(freqMap)

建立纯离散数据的新矩阵

inputNewData = dummiesNewData[dummiesSelect]

预测

lrModel.predict(inputData)

相关文章

  • 回归HW3-逻辑回归的python实现

    在写这篇的时候,其实有两个问题在我的脑海里不停浮现,一个是逻辑回归真正的数学含义,一个是进行逻辑回归之前我需要做的...

  • 机器学习之逻辑回归

    逻辑回归 场景简介:使用逻辑回归实现对鸢尾花的分类预测。基于python基本库的实现 模型说明 逻辑回归是一个分类...

  • 案例

    Python实现逻辑回归(Logistic Regression in Python)http://www.pow...

  • 2018-10-19

    Python与数据挖掘(二)——逻辑回归 逻辑回归一般用来实现分类 一、算法原理 1、预测函数 2、将预测函数的输...

  • python实现逻辑回归

    逻辑回归是一种常见的分类算法,通常用来处理二分类问题。逻辑回归名字中带有回归两个字,却用于处理分类问题,是因为逻辑...

  • 逻辑回归实现-Python

    1、数据预处理 这里的案例是根据用户的年龄和收入预测该用户是否会购买该产品。步骤如下:导入标准库-导入数据集-确定...

  • python实现逻辑回归

    定义逻辑回归算法:logRegression.py 调用算法:use_logRegression.py 附部分数据...

  • 逻辑回归python实现

    参考文章:https://blog.csdn.net/bitcarmanlee/article/details/5...

  • 2018-10-20

    Python与数据挖掘(二)——逻辑回归 2、算法实现 import pandas as pdfrom sklea...

  • 逻辑回归算法(二)

    一、线型回归模型(Linear Regression) 为了更好的实现分类,逻辑回归诞生了。 [逻辑回归是假设数据...

网友评论

      本文标题:回归HW3-逻辑回归的python实现

      本文链接:https://www.haomeiwen.com/subject/hpabmftx.html