简介
神经网络中最基本的成分是神经元模型,感知机(Perceptron)是由两层神经元组成的双层神经网络模型, 其输入层接受外界输入信号传递给输出层, 输出层是 M-P 神经元(阈值逻辑单元)。感知机也属于二分类的线性分类模型, 其输入为实例的特征向量, 输出为实例的类别, 取 +1 和 –1 二值。
本实训项目基于西瓜好坏识别的简单案例介绍感知机的基本原理和思路,然后基于sklearn框架提供的感知机模型完成癌细胞精准识别的实战案例。
第一关
#encoding=utf8
import numpy as np
#构建感知机算法
class Perceptron(object):
def __init__(self, learning_rate = 0.01, max_iter = 200):
self.lr = learning_rate
self.max_iter = max_iter
def fit(self, data, label):
'''
input:data(ndarray):训练数据特征
label(ndarray):训练数据标签
output:w(ndarray):训练好的权重
b(ndarry):训练好的偏置
'''
#编写感知机训练方法,w为权重,b为偏置
self.w = np.array([1.]*data.shape[1])
self.b = np.array([1.])
for i in range(len(label)):
while label[i]*(np.matmul(self.w,data[i])+self.b) <= 0:
self.w = self.w + self.lr * (label[i]*data[i])
self.b = self.b + self.lr * label[i]
def predict(self, data):
'''
input:data(ndarray):测试数据特征
output:predict(ndarray):预测标签
'''
yc = np.matmul(data,self.w) + self.b
for i in range(len(yc)):
if yc[i] >= 0:
yc[i] = 1
else:
yc[i] = -1
predict = yc
return predict
第二关
#encoding=utf8
import os
if os.path.exists('./step2/result.csv'):
os.remove('./step2/result.csv')
#********* Begin *********#
import pandas as pd
from sklearn.linear_model.perceptron import Perceptron
train_data = pd.read_csv('./step2/train_data.csv')
train_label = pd.read_csv('./step2/train_label.csv')
train_label = train_label['target']
test_data = pd.read_csv('./step2/test_data.csv')
clf = Perceptron(max_iter = 1000,eta0 = 0.1, random_state = 666)
clf.fit(train_data,train_label)
predict = clf.predict(test_data)
df = pd.DataFrame({
'result':predict})
df.to_csv('./step2/result.csv', index=False)
#********* End *********#
这次忘了更新,抱歉各位!
感谢大家的支持