# -*- coding: utf-8 -*-
import pandas as pd
import seaborn as sns
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt # 用於畫圖
from sklearn.preprocessing import standardscaler
from sklearn.linear_model import logisticregression
from sklearn.metrics import classification_report#這個包是評價報告
import numpy as np
# 讀取資料檔案
df = pd.read_csv("ex2data1.txt",names=['exam1', 'exam2', 'admitted'])
# sns.set(context="notebook", style="ticks", font_scale=1.5)
## sns.lmplot('exam1', 'exam2', hue='admitted', data=df,
# height=6,
# fit_reg=false,
# scatter_kws=
# )
x = df.iloc[:,:-1].values
y = df.iloc[:,-1].values
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0)
print(type(x_train))
s=standardscaler()
s.fit(x_train)
x_train_stand=s.transform(x_train)
x_test_stand=s.transform(x_test)
log=logisticregression(c=10.0)
log.fit(x_train_stand,y_train) #訓練模型
prediction=log.predict(x_test_stand) #用訓練的模型log來**測試資料
def x2(x1):
return (-log.coef_[0,0]*x1-log.intercept_)/log.coef_[0,1]
x1_plot = x_test_stand[:,0]
x2_plot = x2(x1_plot)
df1 = pd.dataframe(x_train_stand,columns=["x1","x2"])
df1["y"] = y_train
sns.lmplot("x1", "x2", hue="y", data=df1,
height=6,
fit_reg=false
)plt.plot(x1_plot,x2_plot,c='r')
plt.title('decision boundary')
plt.show()
print(classification_report(y_test, prediction))
結果:
# 讀取資料檔案
df = pd.read_csv("ex2data2.txt",names=['exam1', 'exam2', 'admitted'])
print(df.describe())
x = df.iloc[:,:-1].values
y = df.iloc[:,-1].values
#特徵變換
data = {}".format(i - p, p): np.power(x, i - p) * np.power(y, p)
for i in np.arange(power + 1)
for p in np.arange(i + 1)
}if as_ndarray:
return pd.dataframe(data).values
else:
return pd.dataframe(data)
x1 = np.array(df.exam1)
x2 = np.array(df.exam2)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0)
s=standardscaler()
s.fit(x_train)
x_train_stand=s.transform(x_train)
x_test_stand=s.transform(x_test)
power = 6
print(data.head())
log=logisticregression(c=1000.0,penalty='l2',solver='liblinear')
log.fit(data,y_train) #訓練模型
prediction=log.predict(datatest) #用訓練的模型log來**測試資料
為什麼用sklearn的邏輯回歸做效果這麼差,還有待優化。
機器學習 邏輯回歸
邏輯回歸 線性回歸的式子,作為邏輯回歸的輸入 適用場景 二分類 線性回歸的輸入 sigmoid函式 分類 0,1 概率值 計算公式 當目標值為1時 損失函式的變化 當目標值為0時 損失函式的變化 下面用乙個例項來說明邏輯回歸的用法 癌症概率 部分資料的截圖如下 資料描述 699條樣本,供11列資料,...
機器學習 邏輯回歸
lr指的是logistic regression,邏輯回歸。而不是linear regression,線性回歸,不要問為什麼,記住它就好了,haha。它是一種監督學習分類演算法,不是回歸演算法!這裡千萬要注意啦。lr常用於二分類問題,0或者1 假如我們有一堆二維資料,也就是這堆資料有2個特徵x1和x...
機器學習 邏輯回歸
邏輯 邏輯,源自古典希臘語 logos 最初的意思是 詞語 或 言語 引申意思是 思維 或 推理 1902年,教育家嚴復將其意譯為 名學 音譯為 邏輯 回歸 回歸是統計學的乙個重要概念,其本意是根據之前的資料 乙個準確的輸出值。邏輯回歸是目前使用最為廣泛的一種學習演算法,用於解決分類問題。與線性回歸...