機器學習 邏輯回歸

2021-09-25 09:37:42 字數 3984 閱讀 1841

# -*- 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年,教育家嚴復將其意譯為 名學 音譯為 邏輯 回歸 回歸是統計學的乙個重要概念,其本意是根據之前的資料 乙個準確的輸出值。邏輯回歸是目前使用最為廣泛的一種學習演算法,用於解決分類問題。與線性回歸...