周志华《机器学习》课后习题练习——ch3.4 交叉验证法练习

 

 

题目:选择两个UCI数据集,比较10折交叉验证法和留一法所估计出的对率回归的错误率。

其中代码主要参考:https://blog.csdn.net/snoopy_yuan/article/details/64131129

为了练习我采用的数据集与原博客中的有所区别,是UCI中一个霓虹人搞的有关于大肠杆菌中蛋白质的分布的数据集。。。传送门:http://archive.ics.uci.edu/ml/datasets/Ecoli 

其中一共有8个属性,包括大肠杆菌的名字,以及其余7个不同的指标,最终的预测结果一共有8种不同的分类。

简单说一下原博客中没有提到的而我遇到的一些要点吧。

我主要用到的库有:pandas,numpy,sklearn,matplotlib,

首先是UCI的数据集很多都是.data和.name 结尾的文件,这些文件处理起来不是很方便,为此可以在UCI网站中打开相应的数据集,直接Ctrl+A复制到TXT中,然后复制进EXCEL中进行数据处理,进行简单的分列之后即可得到便于进行数据处理的csv文件了。

其次是在原博客中提到了使用seaborn进行画图,但是最新版本的seaborn中已经不带plt了,所以需要引进matplotlib中的pyplot。

然后是在进行数据处理的时候,原数据集中的分类结果是字符串表示的cp,im,pp等,分别代表蛋白质存在于细胞浆,细胞膜等中,对此字符串可以使用pandas的replace函数对其进行替换。

在替换之后使用sklearn进行10折交叉验证的时候会出现一个提示:Unknown label type:‘unkonwn’,这是因为数据类型没有确定导致的,可以使用.astype('int')即可。

 

 1 # -*- coding: utf-8 -*
 2 import numpy as np
 3 import seaborn as sns
 4 import pandas as pd
 5 import matplotlib.pyplot as plt
 6 from sklearn.linear_model import LogisticRegression
 7 from sklearn import metrics
 8 from sklearn.model_selection import cross_val_predict
 9 
10 ecoli = pd.read_csv("ecoli.csv")
11 # print(ecoli)
12 # sns.jointplot("mcg", "gvh", tips, kind='reg')
13 # sns.pairplot(tips)
14 # plt.show()
15 
16 '''
17 Class Distribution. The class is the localization site. Please see Nakai &
18                Kanehisa referenced above for more details.
19 
20   cp  (cytoplasm)                                    143
21   im  (inner membrane without signal sequence)        77               
22   pp  (perisplasm)                                    52
23   imU (inner membrane, uncleavable signal sequence)   35
24   om  (outer membrane)                                20
25   omL (outer membrane lipoprotein)                     5
26   imL (inner membrane lipoprotein)                     2
27   imS (inner membrane, cleavable signal sequence)      2
28 '''
29 
30 ecoli = ecoli.replace(to_replace='cp' , value= 143)
31 ecoli = ecoli.replace('im' , 77)
32 ecoli = ecoli.replace('pp' , 52)
33 ecoli = ecoli.replace('imU' , 35)
34 ecoli = ecoli.replace('om' , 20)
35 ecoli = ecoli.replace('omL' , 5)
36 ecoli = ecoli.replace('imL' , 2)
37 ecoli = ecoli.replace('imS' , 2)
38 print(ecoli)
39 
40 X = ecoli.values[:,1:7]   #training set
41 y = ecoli.values[:,8].astype('int')    #training set
42 # print(X)
43 # print(y)
44 
45 # log-regression lib model
46 log_model = LogisticRegression()
47 m = np.shape(X)[0]
48 
49 # 10-folds CV
50 y_pred = cross_val_predict(log_model, X, y, cv=10)
51 print(metrics.accuracy_score(y, y_pred))
52 # print(y_pred)
53 
54 
55 #LOO
56 from sklearn.model_selection import LeaveOneOut
57 loo = LeaveOneOut()
58 accuracy = 0;
59 for train, test in loo.split(X):
60     log_model.fit(X[train], y[train])  # fitting
61     y_p = log_model.predict(X[test])
62     if y_p == y[test] : accuracy += 1
63 print(accuracy / np.shape(X)[0])

 

 

转载于:https://www.cnblogs.com/fengf1/p/9196720.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习》是一本由周志华编写的经典教材,而王衡军可能是指这本书的具体某个版本或作者对书中习题的讲解。机器学习是一门研究如何使计算机系统自动改进其性能的学科,通常通过模式识别、数据挖掘和统计分析等方来实现。 对于《机器学习练习题及答案,一般包括理论题目(如算原理的理解)、编程实践题(涉及使用Python、R等语言实现模型)以及实战项目。这类资源可能会覆盖书中的各个章节内容,比如线性回归、逻辑回归、决策树、支持向量机、神经网络、深度学习等内容。解答可能涵盖理论解析、代码示例、错误调试以及结果解释。 由于具体的练习题库和答案因版本和来源不同会有所差异,你可以尝试以下途径找到它们: 1. 在书籍官方网站或作者的个人网站上查找官方提供的习题集和答案。 2. 在在线教育平台上,如Coursera、网易云课堂或者GitHub上有相关的课程资料和论坛讨论,学生或讲师可能会分享解题思路和答案。 3. 访问知名的技术问答社区,如Stack Overflow、CSDN等,有时能找到他人整理的学习笔记或解答。 4. 购买专门针对该教材编写的辅导书籍或视频教程,它们通常会提供详细的问题解答。 如果你想获取具体的问题和答案,请告诉我你需要哪一章的内容,或者列举一些典型问题类型,这样我可以帮助你更好地理解相关概念。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值