机器学习1

机器学习 --- 感知机

第1关 感知机 - 西瓜好坏自动识别

#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.])

        #********* Begin *********#

        i = 0

        while i < self.max_iter:

            flag = True

            for j in range(len(label)):

                if label[j] * (np.inner(self.w, data[j]) + self.b) <= 0:

                    flag = False

                    self.w += self.lr * (label[j] * data[j])

                    self.b += self.lr * label[j]

           

            if flag: 

                break

            i+=1

        #********* End *********#

    def predict(self, data):

        '''

        input:data(ndarray):测试数据特征

        output:predict(ndarray):预测标签

        '''

        #********* Begin *********#

        y = np.inner(data, self.w) + self.b

        # np.inner(a,b) 两个数组的内积

        for i in range(len(y)): # range(0,6)

        # print(list(range(0,6))) --> [0, 1, 2, 3, 4, 5]

            if y[i] >= 0:

                y[i] = 1

            else:

                y[i] = -1

        predict = y

 

        #********* End *********#

        return predict

2 scikit-learn感知机实践 - 癌细胞精准识别

#encoding=utf8

import os

 

if os.path.exists('./step2/result.csv'):

    os.remove('./step2/result.csv')

 

#********* Begin *********#

import pandas as pd

#获取训练数据

train_data = pd.read_csv('./step2/train_data.csv')

#获取训练标签

train_label = pd.read_csv('./step2/train_label.csv')

train_label = train_label['target']取标签为target的一列

#获取测试数据

test_data = pd.read_csv('./step2/test_data.csv')

 

from sklearn.linear_model.perceptron import Perceptron

clf = Perceptron(eta0 = 0.01,max_iter = 200)

如果采用默认参数,预测正确率仅50%,不能达到过关标准

# 0.01,200的参数设置是参照感知机第一关设计

# max_iter = 1000,eta0 = 0.1, random_state = 666 为另一种参数设置参考

上述两种都可过关

clf.fit(train_data, train_label)

result = clf.predict(test_data)

 

frameResult = pd.DataFrame({ 'result':result})

frameResult.to_csv('./step2/result.csv', index = False)

 

#********* End *********#

2、机器学习 --- 神经网络

1 神经网络基本概念

上图中的神经网络一共有多少个权重?

A、8  B、12  C、20  D、24

第2关 激活函数

#encoding=utf8

def relu(x):

    '''

    x:负无穷到正无穷的实数

    '''

    #********* Begin *********#

    if x <= 0:

        return 0

    else:

        return x

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值