白话机器学习的数学--二分类(逻辑回归)

import numpy as np
import matplotlib.pyplot as plt

# 读入训练数据
train = np.loadtxt('images2.csv',delimiter=',',skiprows=1)
train_x = train[:,0:2]
train_y = train[:,2]
#初始化参数
theta = np.random.rand(4)
#标准化
mu = train_x.mean(axis=0)
sigma = train_x.std(axis=0)
def standardize(x):
    return (x-mu)/sigma
train_z=standardize(train_x)
#增加x0和x3,形成X矩阵,方便后续计算,现在只有x1,x2,
def to_matrix(x):
    x0 = np.ones([x.shape[0],1])
    x3 =x[:,0,np.newaxis]**2
    return np.hstack([x0,x,x3])
X = to_matrix(train_z)
#sigmord函数
def f(x):
    return 1/(1+np.exp(-np.dot(x,theta)))
def classify(x):
    return (f(x) >= 0.5).astype(np.int64)
#精度的历史记录
accuracies=[]
#参数更新过程
ETA=1e-3
epoch=5000
for i in range(epoch):
    theta=theta-ETA*np.dot(f(X)-train_y,X)
    result = classify(X)== train_y
    accuracy = len(result[result == True])/len(result)
    accuracies.append(accuracy)
x1= np.linspace(-2,2,100)
x2= -(theta[0]+theta[1]*x1+theta[3]*x1**2)/theta[2]
plt.plot(train_z[train_y == 1,0], train_z[train_y == 1,1],'o')
plt.plot(train_z[train_y == 0,0], train_z[train_y == 0,1],'x')
plt.plot(x1, x2,linestyle = 'dashed')
plt.show()
x= np.arange(len(accuracies))
plt.plot(accuracies)
plt.show()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值