import time
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
a = pd.read_table('01.txt',header=none,usecols = (0,1,2))
# 插入一列 1
a.insert(0,'insert',1)
# 規劃一 特徵值調整到 0-1
# a.iloc[:,1]=(a.iloc[:,1]-a.iloc[:,1].mean() )/(a.iloc[:,1].max()-a.iloc[:,1].min())
# a.iloc[:,2]=(a.iloc[:,2]-a.iloc[:,2].mean() )/(a.iloc[:,2].max()-a.iloc[:,2].min())
x = np.mat(a.iloc[:,:3])
y = np.mat(a.iloc[:,3]).t
m,n = x.shape
# 初始引數
params = np.mat([1.0,1.0,1.0]).t
alpha = 0.001 #學習率
times = 1000 #迭代次數
# sigmoid 函式
def sigmoid(inx):
return 1.0/(1+np.exp(-inx))
j =
# 迭代引數 梯度下降
for i in range(times):
error_col = sigmoid(x*params) - y
params[0] = params[0] - alpha*sum( error_col )
params[1] = params[1] - alpha*sum(np.multiply(error_col,x[:,1]))
params[2] = params[2] - alpha*sum(np.multiply(error_col,x[:,2]))
print(params)
# 視覺化
# 收斂影象
x1 = range(0,times,1) # 起始值 終止值 步長
plt.subplot(121),plt.plot(x1,j,'r--'),plt.title('j - itera'),plt.xlabel('itera times'),plt.ylabel(' j ')
# 擬合函式影象
x2=np.linspace(-4,4,50) #開始值 終止值 元素個數
應用廣泛的二分類演算法 邏輯回歸
對問題劃分層次,並利用非線性變換和線性模型的組合,將未知的複雜問題分解為已知的簡單問題。其原理是將樣本的特徵和樣本發生的概率聯絡起來,即,的是樣本發生的概率是多少。由於概率是乙個數,因此被叫做 邏輯回歸 在回歸問題上再多做一步,就可以作為分類演算法來使用了。邏輯回歸只能解決二分類問題,如果是多分類問...
2 簡單的二分類問題 邏輯回歸
1 資料的分類 結構化資料,可以用 表達描述的資料,計算機對於結構化資料有遠超人類的計算能力 非結構化資料 例如影象,聲音 文字序列等無法直接描述的資料,人類對於非結構化資料天生具有超強的理解能力 2 sigmoid函式 二分類問題分類結果的表達,一般輸出為屬於某一類的概率。在神經網路中,我們不能保...
邏輯回歸 線性二分類和非線性啟用
目錄 背景介紹 邏輯回歸 邏輯回歸屬於線性分類器?神經網路 交叉熵與kl散度 啟用函式 自然邏輯 比如,當已知y的區間為 0,1 時,線性回歸就保證不了 值屬於這個區間。logistic regression 二分類線性分類器。邏輯回歸是個二分類器 binary classification 雖說邏...