Cabbage

利用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的基础操作


一天速成Python教程


我的2017年个人总结


But what we forget is that happiness is more than pleasure without pain.The things that bring the greatest joy carry the greatest potential for loss and disappointment.And remember that happiness comes not in denying this but in living with it.

时间过的很快,一年又这么过去了,平淡但却波澜起伏的一年,看了去年的写下的年度计划,不禁感到羞愧。但光懊悔又有何用,不如好好反思总结一下,相信这个世界是永恒发展的,螺旋式上升,即便失败以成为常事,但谁会知道这或许是最好的安排。

2017年,选择(Choose)一直伴随了我一年,大大小小,很多,到现在我都不知道他们是对是错,或许选择就没有对错之分,又或许这对错只是对未发生的事情凭空臆想出来的对错。 想写的很多,却又不知道从何写起,思绪很乱,这种感觉真的很糟,就像话到嘴边却又忘记自己要说啥。

年初自己告诉自己要考研,兴致勃勃占了考研教室的坐位,但却被比赛冲昏了头脑,一个学期基本全耗在比赛上面去了,为了那渺茫的保研希望,不能说完全没有收获,起码认识了许多小伙伴,他们对我影响也都蛮大的。工作还是考研真的很磨人,也是给后辈的一个忠告,纠结这个问题的时候,应该义无反顾的选择考研,哪怕考不上,这一年你一辈子都不会后悔。考研人最大的收获或许不是结果如何,这个过程真的很历练人,当面对失败,看不希望时,那种一往无前的精神。希望有时不是摆在面前看到的,即使看不到,除了前进,别...

阅读全文 »