好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > pytorch實現邏輯回歸

pytorch實現邏輯回歸

熱門標簽:淮安呼叫中心外呼系統如何 電話機器人貸款詐騙 佛山通用400電話申請 打印谷歌地圖標注 廣東旅游地圖標注 看懂地圖標注方法 京華圖書館地圖標注 蘇州人工外呼系統軟件 電話外呼系統招商代理

本文實例為大家分享了pytorch實現邏輯回歸的具體代碼,供大家參考,具體內容如下

一、pytorch實現邏輯回歸

邏輯回歸是非常經典的分類算法,是用于分類任務,如垃圾分類任務,情感分類任務等都可以使用邏輯回歸。

接下來使用邏輯回歸模型完成一個二分類任務:

# 使用邏輯回歸完成一個二分類任務
# 數據準備
import torch
import matplotlib.pyplot as plt

x1 = torch.randn(365)+1.5   # randn():輸出一個形狀為size的標準正態分布Tensor
x2 = torch.randn(365)-1.5
#print(x1.shape)  # torch.Size([365])
#print(x2.shape)  # torch.Size([365])
data = zip(x1.data.numpy(),x2.data.numpy())  # 創建一個聚合了來自每個可迭代對象中的元素的迭代器。 x = [1,2,3]

pos = []
neg = []
def classification(data):
    for i in data:
        if (i[0] > 1.5+0.1*torch.rand(1).item()*(-1)**torch.randint(1,10,(1,1)).item()):
            pos.append(i)
        else:
            neg.append(i)

classification(data)
# 將正、負兩類數據可視化
pos_x = [i[0] for i in pos]
pos_y = [i[1] for i in pos]
neg_x = [i[0] for i in neg]
neg_y = [i[1] for i in neg]
plt.scatter(pos_x,pos_y,c = 'r',marker = "*")
plt.scatter(neg_x,neg_y,c = 'b',marker = "^")
plt.show()

# 構造正、負兩類數據可視化結果如上圖所示

# 構建模型
import torch.nn as nn
class LogisticRegression(nn.Module):
    def __init__(self):
        super(LogisticRegression, self).__init__()
        self.linear = nn.Linear(2,1)
        self.sigmoid = nn.Sigmoid()

    def forward(self,x):
        return self.sigmoid(self.linear(x))

model = LogisticRegression()
criterion = nn.BCELoss()
optimizer = torch.optim.SGD(model.parameters(),0.01)
epoch = 5000
features = [[i[0],i[1]] for i in pos]
features.extend([[i[0],i[1]] for i in neg])   #extend 接受一個參數,這個參數總是一個 list,并且把這個 list 中的每個元素添加到原 list 中
features = torch.Tensor(features)   # torch.Tensor 生成單精度浮點類型的張量

label = [1 for i in range(len(pos))]
label.extend(0 for i in range(len(neg)))
label = torch.Tensor(label)
print(label.shape)

for i in range(500000):
    out = model(features)
    #print(out.shape)
    loss = criterion(out.squeeze(1),label)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    # 分類任務準確率
    acc = (out.ge(0.5).float().squeeze(1)==label).sum().float()/features.size()[0]
    if (i % 10000 ==0):
        plt.scatter(pos_x, pos_y, c='r', marker="*")
        plt.scatter(neg_x, neg_y, c='b', marker="^")
        weight = model.linear.weight[0]
        #print(weight.shape)
        wo = weight[0]
        w1 = weight[1]
        b = model.linear.bias.data[0]
        # 繪制分界線
        test_x = torch.linspace(-10,10,500)   # 500個點
        test_y = (-wo*test_x - b) / w1
        plt.plot(test_x.data.numpy(),test_y.data.numpy(),c="pink")
        plt.title("acc:{:.4f},loss:{:.4f}".format(acc,loss))
        plt.ylim(-5,3)
        plt.xlim(-3,5)
        plt.show()

附上分類結果:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PyTorch線性回歸和邏輯回歸實戰示例

標簽:衡水 畢節 呼和浩特 駐馬店 中山 湖州 江蘇 股票

巨人網絡通訊聲明:本文標題《pytorch實現邏輯回歸》,本文關鍵詞  pytorch,實現,邏輯,回歸,pytorch,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch實現邏輯回歸》相關的同類信息!
  • 本頁收集關于pytorch實現邏輯回歸的相關信息資訊供網民參考!
  • 推薦文章