本次用Python实现逻辑回归算法,逻辑回归是应用非常广泛的一个分类及其学习算法,它将数据拟合到一个logit函数中,从而完成对事件发生的概率进行预测。
本次学习笔记主要参考了《Python进行数据分析与挖掘实践》和作者@寒小阳的博客,地址如下:http://blog.csdn.net/yaoqiang2011/article/details/49123419。
第一步,首先引入本次程序需要用的Python依赖库:
import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from scipy.optimize import minimize
from sklearn.preprocessing import PolynomialFeatures
pd.set_option('display.notebook_repr_html', False)
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', 150)
pd.set_option('display.max_seq_items', None)
#%config InlineBackend.figure_formats = {'pdf',}
%matplotlib inline
import seaborn as sns
sns.set_context('notebook')
sns.set_style('white')
接下来开始定义loaddata、plotdata两个函数,功能分别是读取并显示前六行数据,然后对样本数据进行标引,这里设置了五个参数,分别传入数据,x,y标签,数据的正负分类。
def loaddata(file, delimeter):
data = np.loadtxt(file, delimiter=delimeter)
print('Dimensions: ',data.shape)
print(data[1:6,:])
return(data)
def plotData(data, label_x, label_y, label_pos, label_neg, axes=None):
# 获得正负样本的下标(即哪些是正样本,哪些是负样本)
neg = data[:,2] == 0
pos = data[:,2] == 1
if axes == None:
axes = plt.gca()
axes.scatter(data[pos][:,0], data[pos][:,1], marker='+', c='k', s=60, linewidth=2, label=label_pos)
axes.scatter(data[neg][:,0], data[neg][:,1], c='y', s=60, label=label_neg)
axes.set_xlabel(label_x)
axes.