日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

python (2) 逻辑回归实例

發(fā)布時(shí)間:2024/1/1 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python (2) 逻辑回归实例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
import torch import pandas as pd import numpy as np import matplotlib.pyplot as plt#數(shù)據(jù)預(yù)處理 #因?yàn)榘褦?shù)據(jù)集第一列當(dāng)成了表頭,所以寫一句 data = pd.read_csv('C:\\Users\\qjjt\\Desktop\\python\\dataset\\第4章\\credit-a.csv',header=None) print(data.head())#注意這里第16列是輸出,不是特征值,所以要注意選取 #iloc函數(shù)根據(jù)位置索引,:是所有行都取。:-1取到-1前的列的特征 X = data.iloc[:,:-1] Y = data.iloc[:,-1] Y.unique() #查看Y的取值,可看見為1,-1,這里因?yàn)槭沁壿嫽貧w,最好改為0,1 Y = data.iloc[:,-1].replace(-1,0)#將y中的-1替換為0 print(Y.unique())#數(shù)據(jù)預(yù)處理,從pandas轉(zhuǎn)為tensor X = torch.from_numpy(X.values).type(torch.float32)#X的值轉(zhuǎn)為tensor后指定數(shù)據(jù)類型為float32print(X.shape) #可看出x的值是一個(gè)矩陣 print(Y.values) #可看出y是一個(gè)array,所以需要reshape成列向量的樣子.因?yàn)閄是[653,15],所以Y也要變成[653,1] Y = torch.from_numpy(Y.values.reshape(-1,1)).type(torch.float32) print(Y.size()) #torch.Size([653, 1])from torch import nn#ky直接將多個(gè)層順序組合成一個(gè)模型 # 第一層linear層輸入15個(gè)特征值,輸出一個(gè)參數(shù) # 第二層sigmoid層轉(zhuǎn)換,輸出0,1 model = nn.Sequential(nn.Linear(15,1),nn.Sigmoid() ) print(model) #打印看看model樣子#二元交叉熵?fù)p失函數(shù) loss_fn = nn.BCELoss()#優(yōu)化函數(shù) opt = torch.optim.Adam(model.parameters(),lr = 0.001)#batch訓(xùn)練,即從訓(xùn)練集中取出一部分訓(xùn)練 batch_size = 16 #一次訓(xùn)練16個(gè)數(shù)據(jù) no_of_batch = 653//16 #最終要完成訓(xùn)練所花的次數(shù),這里是整除epoches = 1000 #epoche指全部數(shù)據(jù)訓(xùn)練一遍 for epoche in range(epoches):for batch in range(no_of_batch):start = batch*batch_size #每次從start行開始輸入數(shù)據(jù)end = start + batch_sizex = X[start:end] #一個(gè)批次中的x,yy = Y[start:end]y_pred = model(x)loss = loss_fn(y_pred,y)#梯度置零和計(jì)算參數(shù)梯度opt.zero_grad()#后向傳播loss.backward()#優(yōu)化opt.step()#顯示最終計(jì)算出來的w1.w2....w15和b的數(shù)值, print(model.state_dict())#查看實(shí)際預(yù)測結(jié)果,這里比較時(shí)都用的numpy print((model(X).data.numpy() > 0.5).astype('int') == Y.numpy()) #預(yù)測模型正確率直接求均值即可得 print(((model(X).data.numpy() > 0.5).astype('int') == Y.numpy()).mean)

這里面損失,優(yōu)化,后向傳播概念可以看“反向傳播算法”過程及公式推導(dǎo)(超直觀好懂的Backpropagation)_aift的博客-CSDN博客_反向傳播算法

反向傳播詳解_weixin_40788815的博客-CSDN博客_反向傳播

總結(jié)

以上是生活随笔為你收集整理的python (2) 逻辑回归实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。