机器学习 感知机算法

机器学习的作业 传上来 供期末复习用

import numpy as np
from sklearn import datasets
breast_cancer_data = datasets.load_breast_cancer()
features = breast_cancer_data.data  # fea [569][30]
targets = breast_cancer_data.target
data_total = np.array(features, dtype=np.int64)
label_total = np.array(targets, dtype=np.int64)
for i in range(len(label_total)):  # 将标签中的数据0转化为-1 便于分析
    if label_total[i] == 0:
        label_total[i] = -1
data_train = data_total[0:500]  # 分割出测试集与训练集
label_train = label_total[0:500]
data_test = data_total[500:]
label_test = label_total[500:]
w = np.zeros([1, 30], dtype=np.float32)  # 设置权重
b = 0
eta = 1
# 使用随机梯度下降法求解w, b
iteration = 0
error_data = True
while error_data:
    error_data = False
    for i in range(len(data_train)):
        judge = label_train[i] * (np.dot(data_train[i], w.T) + b)
        if judge <= 0:       # 判断y(wx+b)
            error_data = True
            w = w + np.dot(label_train[i], data_train[i])
            b = b+label_train[i]  # 随机梯度下降法更新参数
    iteration = iteration + 1
    if iteration > 500000:
        break
print('Iteration:%d  w:%s  b:%s' % (iteration, w, b))
num = len(label_test)
error = 0.0
for i in range(num):
    classify_num = np.dot(data_test[i], w.T) + b
    if classify_num > 0:
        class_ = 1
    else:
        class_ = -1
    if class_ != label_test[i]:
        error += 1
print('错误率为 %f' % (error / num))


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值