菜狗子我又特么回来了&清明学习总结

博客这东西。前两天因为下csdn资源 切换其他账号,绑定来绑定去把这个给搞丢了
虽然这个博客没记录什么太多东西 但是有些东西因为在实验室和寝室里面 迁移 没个地存 还是挺醉醉哒

也知道了每天记录的好。

至于这个博客是怎么找回的,**解除qq绑定,然后清除浏览器缓存,重新使用qq登录,就可以登录到原账号上**

清明节在学校呆了三天,哪也没去 打了两次狼人杀,其余时间都在看麦子学院的机器学习教程,学习sklearn,解决问题,发现问题,因为代码的一些问题,使用python的版本又搞回来了2.7,也是发现了anaconda的navigator的好用之处。

1.关于next()函数在python2.X与Python3.x中的差别
由于会经常用到next()(.next())函数(方法),所以还要提到另一个语法改动(实现方面也做了改动):在Python 2.7.5中,函数形式和方法形式都可以使用,而在Python 3中,只能使用next()函数(试图调用.next()方法会触发AttributeError)。
Python 2

print 'Python', python_version()
my_generator = (letter for letter in 'abcdefg')
next(my_generator)
my_generator.next()
Python 2.7.6
'b'

Python 3

print('Python', python_version())
my_generator = (letter for letter in 'abcdefg')
next(my_generator)
Python 3.4.1
'a'

2.想要移植在pc1中所有安装的Python库
运行命令 pip freeze >requirements.txt
就会生成一个requirements.txt 文件

然后在你要使用的pc2端 命令行下,运行如下命令“`
Pip install -r requirements.txt

```
 **3。关于麦子学院课程课件个人摘录备忘**
3-1 课程介绍
 机器学习 (Machine Learning, ML)

     2.1 概念:多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

     2.2 学科定位:人工智能(Artificial Intelligence, AI)的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。

     2.3 定义:探究和开发一系列算法来如何使计算机不需要通过外部明显的指示,而可以自己通过数据来学习,建模,并且利用建好的模型和新的输入来进行预测的学科。

3-2 基本概念
4. 训练集(training set/data)/训练样例(training examples): 用来进行训练,也就是产生模型或者算法的数据集
测试集(testing set/data)/测试样例 (testing examples):用来专门进行测试已经学习好的模型或者算法的数据集
特征向量(features/feature vector):属性的集合,通常用一个向量来表示,附属于一个实例
标记(label): c(x), 实例类别的标记
正例(positive example)
反例(negative example)

  1. 分类 (classification): 目标标记为类别型数据(category)
    回归(regression): 目标标记为连续性数值 (continuous numeric value)
  2. 例子:研究肿瘤良性,恶性于尺寸,颜色的关系
    特征值:肿瘤尺寸,颜色
    标记:良性/恶性

    有监督学习(supervised learning): 训练集有类别标记(class label)
    无监督学习(unsupervised learning): 无类别标记(class label)
    半监督学习(semi-supervised learning):有类别标记的训练集 + 无标记的训练集

  3. 机器学习步骤框架

    8.1 把数据拆分为训练集和测试集
    8.2 用训练集和训练集的特征向量来训练算法
    8.2 用学习来的算法运用在测试集上来评估算法 (可能要设计到调整参数(parameter tuning), 用验证集(validation set)

3-3 决策树
1. 什么是决策树/判定树(decision tree)?

 判定树是一个类似于流程图的树结构:其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或类分布。树的最顶层是根结点。 

      算法:

树以代表训练样本的单个结点开始(步骤1)。
如果样本都在同一个类,则该结点成为树叶,并用该类标号(步骤2 和3)。
否则,算法使用称为信息增益的基于熵的度量作为启发信息,选择能够最好地将样本分类的属性(步骤6)。该属性成为该结点的“测试”或“判定”属性(步骤7)。在算法的该版本中,
所有的属性都是分类的,即离散值。连续属性必须离散化。
对测试属性的每个已知的值,创建一个分枝,并据此划分样本(步骤8-10)。
算法使用同样的过程,递归地形成每个划分上的样本判定树。一旦一个属性出现在一个结点上,就不必该结点的任何后代上考虑它(步骤13)。
递归划分步骤仅当下列条件之一成立停止:
(a) 给定结点的所有样本属于同一类(步骤2 和3)。
(b) 没有剩余属性可以用来进一步划分样本(步骤4)。在此情况下,使用多数表决(步骤5)。
这涉及将给定的结点转换成树叶,并用样本中的多数所在的类标记它。替换地,可以存放结
点样本的类分布。
(c) 分枝
test_attribute = a i 没有样本(步骤11)。在这种情况下,以 samples 中的多数类
创建一个树叶(步骤12)

5. 决策树的优点:
直观,便于理解,小规模数据集有效

6. 决策树的缺点:
处理连续变量不好
类别较多时,错误增加的比较快
可规模性一般(

# -*- coding: utf-8 -*-
"""
Created on Fri Mar 31 13:02:19 2017

@author: Lucask
"""

from sklearn.feature_extraction import DictVectorizer
import csv
from sklearn import preprocessing
from sklearn import tree
from sklearn.externals.six import StringIO

allElectronicsData = open(r'C:\Users\Lucask\Desktop\python test\sklearn_test\AllElectronics.csv','rb')
reader = csv.reader(allElectronicsData)   #按行读取内容
headers = reader.next()
print(headers)      #将特征值的标题头提取出来

featureList= []
labelList = []

for row in reader:
    labelList.append(row[len(row)-1])
    rowDict = {}
    for i in range(1,len(row)-1):
        rowDict[headers[i]] = row[i]
    featureList.append(rowDict)
print(featureList)

vec = DictVectorizer()
dummyX = vec.fit_transform(featureList).toarray()

######调用库对特征值的数值转化#################################
print("dummyX:"+str(dummyX))
print(vec.get_feature_names())

print("LabelList:"+str(labelList))
##############################################################


##############调用函数对分类的最后一个值进行转化###############
lb = preprocessing.LabelBinarizer()
dummyY = lb.fit_transform(labelList)
print("dummyY:"+str(dummyY))
#############################################################
# Using decision tree for classification
# clf = tree.DecisionTreeClassifier()

clf = tree.DecisionTreeClassifier(criterion='entropy')
clf = clf.fit(dummyX,dummyY)
print("clf:"+str(clf))

# Visulize model
with open("allEctronicInformationGainOri.dot",'w') as f:
    f = tree.export_graphviz(clf,feature_names=vec.get_feature_names(),out_file = f)


######此两行代码设置参数 对原表格中的数据读取,进行输出############  
oneRowX = dummyX[0, :]
print("oneRowX:"+str(oneRowX))
##############################################################

######此行为对新数据的更改########################################
newRowX = oneRowX
newRowX[0] = 1
newRowX[2] = 0
###############################################################################


print("oneRowX:" + str(newRowX))

predictedY = clf.predict(newRowX)
print("predictedY" + str(predictedY))

3-4 KNN算法

  1. 综述
    1.1 Cover和Hart在1968年提出了最初的邻近算法
    1.2 分类(classification)算法
    1.3 输入基于实例的学习(instance-based learning), 懒惰学习(lazy learning)

    1. 算法详述

      3.1 步骤:
      为了判断未知实例的类别,以所有已知类别的实例作为参照
      选择参数K
      计算未知实例与所有已知实例的距离
      选择最近K个已知实例
      根据少数服从多数的投票法则(majority-voting),让未知实例归类为K个最邻近样本中最多数的类别

# -*- coding: utf-8 -*-
"""
Created on Sat Apr 01 16:28:40 2017

@author: Lucask
"""

import csv
import random
import math
import operator

#################导入数据集###################################################
def loadDataset(filename, split, trainingSet=[] , testSet=[]):
    with open(filename, 'rb') as csvfile:
        lines = csv.reader(csvfile)    #读取每行数据
        dataset = list(lines)          #变为列表数据
        for x in range(len(dataset)-1):
            for y in range(4):
                dataset[x][y] = float(dataset[x][y])
            if random.random() < split:          #判断是否小于设置的split值
                trainingSet.append(dataset[x])    #加载到训练集
            else:
                testSet.append(dataset[x])        #加载到测试集

################################################################################

#########################计算欧氏距离###############################################

def euclideanDistance(instance1, instance2, length):   #length维度
    distance = 0
    for x in range(length):
        distance += pow((instance1[x] - instance2[x]), 2)
    return math.sqrt(distance)
################################################################################


def getNeighbors(trainingSet, testInstance, k):
    distances = []
    length = len(testInstance)-1
    for x in range(len(trainingSet)):
        dist = euclideanDistance(testInstance, trainingSet[x], length)
        distances.append((trainingSet[x], dist))
    distances.sort(key=operator.itemgetter(1))    
    neighbors = []
    for x in range(k):
        neighbors.append(distances[x][0])
    return neighbors

def getResponse(neighbors):
    classVotes = {}
    for x in range(len(neighbors)):
        response = neighbors[x][-1]
        if response in classVotes:
            classVotes[response] += 1
        else:
            classVotes[response] = 1
    sortedVotes = sorted(classVotes.iteritems(), key=operator.itemgetter(1), reverse=True)
    return sortedVotes[0][0]

def getAccuracy(testSet, predictions):
    correct = 0
    for x in range(len(testSet)):
        if testSet[x][-1] == predictions[x]:
            correct += 1
    return (correct/float(len(testSet))) * 100.0

def main():
    # prepare data
    trainingSet=[]
    testSet=[]
    split = 0.67
    loadDataset(r'C:\Users\Lucask\Desktop\python test\sklearn_test\iris.data.txt', split, trainingSet, testSet)
    print 'Train set: ' + repr(len(trainingSet))
    print 'Test set: ' + repr(len(testSet))
    # generate predictions
    predictions=[]
    k = 3
    for x in range(len(testSet)):
        neighbors = getNeighbors(trainingSet, testSet[x], k)
        result = getResponse(neighbors)
        predictions.append(result)
        print('> predicted=' + repr(result) + ', actual=' + repr(testSet[x][-1]))
    accuracy = getAccuracy(testSet, predictions)
    print('Accuracy: ' + repr(accuracy) + '%')

main()

后面太多了 懒得放了。。基本都是很简单的。难的还没涉及

Practice makes perfect !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值