Cabbage

Python神经网络编程笔记


神经元

想一想便知道,当一个人捏你一下以至于你会痛得叫起来的力度便是神经元的阈值,而我们构建的时候也是把这种现象抽象成一个函数,叫作激活函数

而这里便是我们使用sigmoid函数的原因,它是一个很简单的函数,平滑更接近显示。

​ $$y=\frac{1}{1+e^{-x}}$$

Snipaste_2018-12-03_15-29-41.png

神经网络传递信号

神经网络便是通过一个一个神经元连接,使用权值x输入的和在通过sigmoid函数得到最终的输出值,然后一层一层的传递下去。

$$O = sigmoid(W\cdot I)$$

其中,$O$为...

阅读全文 »

Python进行高效的行计算


太长懒得看版

使用map函数进行行计算,加上np.column_stack 进行合并最快

假如有这么一组数据

df = pd.DataFrame({"one":list("AABBCCDD"),
                   "two":[1,1,2,2,
        
阅读全文 »

利用matplotlib进行数据可视化


matplotlib是python中的一个画图库,继承了matlib(从名字上也看得出来)的优点和语法,所以对于熟悉matlib的用户来说是十分友好的。

pylab和pyplot

关于pylab和pyplot,人们做过不少的讨论。这两个模块有哪些不同呢?pylab模块跟matplotlib一起安装,而pyplot则是matplotlib的内部模块。两者的导入方法有所不同,可选择其中一种进行导入。

from...
                
            
            

阅读全文 »

启发式算法之遗传算法


刚开学便被拉去参加了研究生数模比赛,赛题是一个航班排班的优化问题,所以第一反映便是遗传算法,比赛期间三个问题都使用单目标遗传算法,趁着还比较熟悉,特此记录,以便后续复习。本篇文章使用Python进行实现。

启发式算法

启发式算法是一种技术,这种技术使得在可接受的计算成本内去搜寻最好的解,但不一定能保证所得的可行解和最优解,甚至在多数情况下,无法阐述所得解同最优解的近似程度。

就是说这种算法的全局最优解只是理论上可行,大多数情况下都是一个局部最优解。启发式算法用的比较多的有模拟退火算法(SA)、遗传算法(GA)、列表搜索算法(ST)、进化规划(EP)、进化策略(ES)、蚁群算法(ACA)、人工神经网络(ANN)。这里重点介绍一下遗传算法(GA)。

遗传算法准备

遗传算法(Genetic Algorithm, GA)起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。其本质是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最佳解。

具体来说,在写算法之前,有四个很重要的步骤:

  1. 确定编码方式
  2. 如何设计编码
  3. 确定约束条件
  4. 如何实现约束

确定编码方式

对于编码方式来说,影响到交叉算子、变异算子等遗传算子的运算方法,大很大程度上决定了遗传进化的效率。 总的来说,...

阅读全文 »

CART算法的实现


3.CART

# -*- coding: utf-8 -*-


from math import log
import operator
import time
import pickle


# 标签集,0为数值型,1为标称型
label_type = {'0':1,'1':1,'2'
        
阅读全文 »

Kmeans的算法实现


2.K-Means

main.py

# coding:utf-8

import math
import onehot
import csv
import random
import time

global n

def get_avg(data):
    '''
    平均值
    :param data: 一个list
    :return: resul...
                
            
            

阅读全文 »

KNN算法的实现


1.KNN

# coding:utf-8

import operator
from collections import Counter

def knn(target, data_set, labels, k):
    distance = []
    vote_labels = []
    for
        
阅读全文 »

机器学习分类算法的理解


机器学习算法理解

1.分类

  1. KNN算法

k-近邻算法是基于实例的学习方法中最基本的,我认为也是算法思想最简单的。很暴力的一个算法,主要思想就是用当前要预测数据去一一对比训练集中数据,找出最相似的K个数据,然后使用投票的方法决定当前该数据属于那一类,实现起来也相当容易,计算相似度方法有以下几种:

  1. 欧氏距离(Euclidean distance):

$$L_2(x_i,x_j)=(\sum_{l=1}^n|x_i^{(l)}-x_j^{(l)}|^2)^{\frac{1}{2}}$$

  1. 曼哈顿距离(Manhattan distance):

$$L_1(x_i,x_j)=\sum_{l=1}^n|x_i^{(l)}-x_j^{(l)}|^2$$

但这个算法有个缺点就是当训练集很大的时候,使用线性扫描的话十分耗时,这种方法是不可行的。所以为了提高k-近邻搜索的效率,可以考虑使用特殊的结构储存训练数据,以减少计算距离的次数,具体方法很多,使用的比较多的是kd tree的方法。

  1. 朴素贝叶斯

朴素贝叶斯分类也是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素。

朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。

首先我们要知道什么是贝叶斯定理,贝叶斯定理解决了现实生活里经常遇到的问题:已知某条件概率,如何得到...

阅读全文 »

机器学习与数据挖掘的个人理解


一、机器学习基本概念

机器学习是人工智能的一个分支,它是一门研究机器获取新知识和新技能,并识别现有知识的学问。机器学习的精确定义为:

It's a computer program learning from experience E with respect to some task T and some performance measure P, if its performance on T as measured by P, improves with E

Tom Mitchell 1998

机器学习已广泛应用于数据挖掘、...

阅读全文 »

SQL的基础操作