logistic回归习题:python版
线性可分
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('E:\ML_exercise\ex2\ex2data1.txt',names=['Exam1','Exam2','Accepted'])
data.head()
①数据可视化
fig,ax = plt.subplots()
ax.scatter(data[data['Accepted']==0]['Exam1'],data[data['Accepted']==0]['Exam2'],c='r',marker='x',label='Admitted')
ax.scatter(data[data['Accepted']==1]['Exam1'],data[data['Accepted']==1]['Exam2'],c='b',marker='o',label='Not admitted')
ax.legend()
ax.set(xlabel='Exam 1 score',
ylabel='Exam 2 score')
plt.show()
②构造数据集
def get_Xy(data):
data.insert(0,'ones',1)
X_=data.iloc[:,0:-1]
X=X_.values
y_=data.iloc[:,-1]
y=y_.values.reshape(len(y_),1)
return X,y
X,y=get_Xy(data)
③构造损失函数
def sigmoid(z):
return 1 / (1+np.exp(-z))
def costFunction(X,y,theta):
A=sigmoid(X@theta)
inner=y*np.log(A)+(1-y)*(np.log(1-A))
return -