Python手撸机器学习系列(四):朴素贝叶斯(华强买瓜版)
目录
- 一、原理
- 1.1 买瓜
- 1.2 算瓜
- 二、代码实现
- 三、参考文献
一、原理
1.1 买瓜
大家好,我叫刘华强。我现在手里有一堆西瓜,我希望通过观察我这一堆西瓜中好瓜的特征来总结出判断好瓜的标准,这样以后再看到别的西瓜我也能判断出这是好瓜还是坏瓜。这样瓜棚老板给我挑的瓜我一下就知道保不保熟(好瓜还是坏瓜)。
现在,我手里共有17个西瓜,它们大概长这样:
这堆西瓜里,我主要通过色泽、根蒂、敲声、纹理、脐部、触感六个特征来判断它们是好瓜还是坏瓜,其中好瓜用1表示坏瓜用0表示。也就是说,我们用六个特征作为前提计算它是好瓜或是坏瓜的概率,用公式表示为:
P(好瓜或坏瓜∣色泽、根蒂、敲声、纹理、脐部、触感)P(好瓜或坏瓜|色泽、根蒂、敲声、纹理、脐部、触感) P(好瓜或坏瓜∣色泽、根蒂、敲声、纹理、脐部、触感)
既然我们的标题叫做朴素贝叶斯,那么总得跟贝叶斯扯上点关系吧,先看贝叶斯公式:
P(B∣A)=P(A∣B)P(B)P(A)P(B|A) = \frac{P(A|B)P(B)}{P(A)} P(B∣A)=P(A)P(A∣B)P(B)
换到我们这堆西瓜就是:
P(类别∣特征)=P(特征∣类别)P(类别)P(特征)P(类别|特征)=\frac{P(特征|类别)P(类别)}{P(特征)} P(类别∣特征)=P(特征)P(特征∣类别)P(类别)
理解起来就是:
P(类别∣特征)P(类别|特征)P(类别∣特征) :根据六大特征判断这个西瓜的好坏,也是我们的目标
P(特征∣类别)P(特征|类别)P(特征∣类别):在一个西瓜是好瓜或者坏瓜的前提下,特征的概率分布情况
P(类别)P(类别)P(类别):我们这17个西瓜中好瓜和坏瓜分别的比重
P(特征)P(特征)P(特征):六个特征中每个特征自己的分布情况
1.2 算瓜
了解基本的想法后,我提着这17个西瓜去找瓜棚老板要瓜了,他给我挑了一个不错的西瓜,这个西瓜色泽青绿,根蒂蜷缩,敲声沉闷,纹理稍糊,脐部凹陷,触感硬滑。下面我将根据我那17个西瓜的情况来判断这个瓜是不是好瓜,同时决定老板该不该被捅。
按照上面的思想,我将计算
p(好瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)p(坏瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)p(好瓜|青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)\\ p(坏瓜|青绿,蜷缩,沉闷,稍糊,凹陷,硬滑) p(好瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)p(坏瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)
这两组概率来判断是不是好瓜
显然,我现在还没有办法根据这些个特征看看这瓜是不是好瓜,但是呢,通过贝叶斯,我能通过我那17个瓜的情况来推测这个新瓜的情况,即:
p(好瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑∣好瓜)P(好瓜)p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)p(坏瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑∣坏瓜)P(坏瓜)p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)p(好瓜|青绿,蜷缩,沉闷,稍糊,凹陷,硬滑) =\frac{p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑|好瓜)P(好瓜)}{p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)}\\ p(坏瓜|青绿,蜷缩,沉闷,稍糊,凹陷,硬滑) =\frac{p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑|坏瓜)P(坏瓜)}{p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)} p(好瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑∣好瓜)P(好瓜)p(坏瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑∣坏瓜)P(坏瓜)
同时,我注意到,要区分好瓜和坏瓜,分母的计算好像都是一样的,我赶时间捅老板,所以能省就省了吧,于是,概率计算就变成了:
p(好瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑∣好瓜)P(好瓜)p(坏瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑∣坏瓜)P(坏瓜)p(好瓜|青绿,蜷缩,沉闷,稍糊,凹陷,硬滑) ={p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑|好瓜)P(好瓜)}\\ p(坏瓜|青绿,蜷缩,沉闷,稍糊,凹陷,硬滑) =p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑|坏瓜)P(坏瓜) p(好瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑∣好瓜)P(好瓜)p(坏瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑∣坏瓜)P(坏瓜)
这可太好了,只需要计算这么两个公式,就知道该不该捅老板了
但是,同时满足青绿、蜷缩、沉闷、稍糊、凹陷、硬滑的瓜可不好找啊,我这区区17个西瓜极有可能没有一个符合这样的,那概率为就是0啊,按我刘华强的性格,我必不可能再去买一个这样的西瓜,那只能叫贝叶斯老实点把公式给改了,于是朴素贝叶斯就出现了:假设我们的特征之间是相互独立的,于是便有:
p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑∣好瓜)=p(青绿∣好瓜)∗p(蜷缩∣好瓜)∗p(沉闷∣好瓜)∗p(稍糊∣好瓜)∗p(凹陷∣好瓜)∗p(硬滑∣好瓜)p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑∣坏瓜)=p(青绿∣坏瓜)∗p(蜷缩∣坏瓜)∗p(沉闷∣坏瓜)∗p(稍糊∣坏瓜)∗p(凹陷∣坏瓜)∗p(硬滑∣坏瓜)p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑|好瓜) = p(青绿|好瓜)*p(蜷缩|好瓜)*p(沉闷|好瓜)*p(稍糊|好瓜)*p(凹陷|好瓜)*p(硬滑|好瓜)\\ p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑|坏瓜) = p(青绿|坏瓜)*p(蜷缩|坏瓜)*p(沉闷|坏瓜)*p(稍糊|坏瓜)*p(凹陷|坏瓜)*p(硬滑|坏瓜) p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑∣好瓜)=p(青绿∣好瓜)∗p(蜷缩∣好瓜)∗p(沉闷∣好瓜)∗p(稍糊∣好瓜)∗p(凹陷∣好瓜)∗p(硬滑∣好瓜)p(青绿,蜷缩,沉闷,稍糊,凹陷,硬滑∣坏瓜)=p(青绿∣坏瓜)∗p(蜷缩∣坏瓜)∗p(沉闷∣坏瓜)∗p(稍糊∣坏瓜)∗p(凹陷∣坏瓜)∗p(硬滑∣坏瓜)
ps:朴素贝叶斯的朴素之处:即假设了特征之间的独立性。要做这样的假设的原因在于:
- 如果没有这个假设,现实生活中上述的这个式子概率极有可能是不能做的,因为可能一个对象有许多特征,每一个特征也有许多种可能,上面西瓜的特征总共是3×3×3×3×3×2=486种可能,计算机计算还好,但人来算就太吃力了。
- 同时满足上述所有个特征的物体(也就是瓜)可能真的没有,概率很容易为0
好了,中场休息后我们继续买瓜,在朴素贝叶斯之后,我们的公式最后变为:
p(好瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿∣好瓜)∗p(蜷缩∣好瓜)∗p(沉闷∣好瓜)∗p(稍糊∣好瓜)∗p(凹陷∣好瓜)∗p(硬滑∣好瓜)p(好瓜)p(坏瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿∣坏瓜)∗p(蜷缩∣坏瓜)∗p(沉闷∣坏瓜)∗p(稍糊∣坏瓜)∗p(凹陷∣坏瓜)∗p(硬滑∣坏瓜)p(坏瓜)p(好瓜|青绿,蜷缩,沉闷,稍糊,凹陷,硬滑) ={ p(青绿|好瓜)*p(蜷缩|好瓜)*p(沉闷|好瓜)*p(稍糊|好瓜)*p(凹陷|好瓜)*p(硬滑|好瓜)p(好瓜)}\\ p(坏瓜|青绿,蜷缩,沉闷,稍糊,凹陷,硬滑) =p(青绿|坏瓜)*p(蜷缩|坏瓜)*p(沉闷|坏瓜)*p(稍糊|坏瓜)*p(凹陷|坏瓜)*p(硬滑|坏瓜)p(坏瓜) p(好瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿∣好瓜)∗p(蜷缩∣好瓜)∗p(沉闷∣好瓜)∗p(稍糊∣好瓜)∗p(凹陷∣好瓜)∗p(硬滑∣好瓜)p(好瓜)p(坏瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿∣坏瓜)∗p(蜷缩∣坏瓜)∗p(沉闷∣坏瓜)∗p(稍糊∣坏瓜)∗p(凹陷∣坏瓜)∗p(硬滑∣坏瓜)p(坏瓜)
按照我们之前的数据集,我们逐步计算:
计算p(好瓜)p(好瓜)p(好瓜)和p(坏瓜)p(坏瓜)p(坏瓜):
总共17个瓜,好瓜8个坏瓜9个,即:
p(好瓜)=817,p(坏瓜)=917p(好瓜) = \frac{8}{17},p(坏瓜)=\frac{9}{17}p(好瓜)=178,p(坏瓜)=179
计算p(特征好瓜)p(特征好瓜)p(特征好瓜)和p(特征∣坏瓜)p(特征|坏瓜)p(特征∣坏瓜):
好瓜共8个,里面色泽青绿的瓜3个,根蒂蜷缩的瓜5个,敲声沉闷的瓜2个,纹理稍糊的瓜1个,脐部凹陷的瓜5个,触感硬滑的瓜6个,所以:
p(青绿∣好瓜)=38,p(蜷缩∣好瓜)=58,p(沉闷∣好瓜)=28,p(稍糊∣好瓜)=18,p(凹陷∣好瓜)=58,p(硬滑∣好瓜)=68p(青绿|好瓜) = \frac{3}{8},p(蜷缩|好瓜) = \frac{5}{8},p(沉闷|好瓜) = \frac{2}{8},p(稍糊|好瓜)=\frac{1}{8},p(凹陷|好瓜) = \frac{5}{8},p(硬滑|好瓜) = \frac{6}{8}p(青绿∣好瓜)=83,p(蜷缩∣好瓜)=85,p(沉闷∣好瓜)=82,p(稍糊∣好瓜)=81,p(凹陷∣好瓜)=85,p(硬滑∣好瓜)=86
坏瓜共9个,里面色泽青绿的瓜3个,根蒂蜷缩的瓜3个,敲声沉闷的瓜3个,纹理稍糊的瓜4个,脐部凹陷的瓜2个,触感硬滑的瓜6个,所以
p(青绿∣坏瓜)=39,p(蜷缩∣坏瓜)=39,p(沉闷∣坏瓜)=39,p(稍糊∣坏瓜)=49,p(凹陷∣坏瓜)=29,p(硬滑∣坏瓜)=69p(青绿|坏瓜)=\frac{3}{9},p(蜷缩|坏瓜)=\frac{3}{9},p(沉闷|坏瓜)=\frac{3}{9},p(稍糊|坏瓜)=\frac{4}{9},p(凹陷|坏瓜)=\frac{2}{9},p(硬滑|坏瓜)=\frac{6}{9}p(青绿∣坏瓜)=93,p(蜷缩∣坏瓜)=93,p(沉闷∣坏瓜)=93,p(稍糊∣坏瓜)=94,p(凹陷∣坏瓜)=92,p(硬滑∣坏瓜)=96
计算p(好瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)p(好瓜|青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)p(好瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)和p(坏瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)p(坏瓜|青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)p(坏瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑):
p(好瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿∣好瓜)∗p(蜷缩∣好瓜)∗p(沉闷∣好瓜)∗p(稍糊∣好瓜)∗p(凹陷∣好瓜)∗p(硬滑∣好瓜)p(好瓜)=38∗58∗28∗18∗58∗68∗817=0.001615p(好瓜|青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)={p(青绿|好瓜)*p(蜷缩|好瓜)*p(沉闷|好瓜)*p(稍糊|好瓜)*p(凹陷|好瓜)*p(硬滑|好瓜)p(好瓜)}\\=\frac{3}{8}*\frac{5}{8}*\frac{2}{8}*\frac{1}{8}*\frac{5}{8}*\frac{6}{8}*\frac{8}{17}\\= 0.001615\\ p(好瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿∣好瓜)∗p(蜷缩∣好瓜)∗p(沉闷∣好瓜)∗p(稍糊∣好瓜)∗p(凹陷∣好瓜)∗p(硬滑∣好瓜)p(好瓜)=83∗85∗82∗81∗85∗86∗178=0.001615
p(坏瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿∣坏瓜)∗p(蜷缩∣坏瓜)∗p(沉闷∣坏瓜)∗p(稍糊∣坏瓜)∗p(凹陷∣坏瓜)∗p(硬滑∣坏瓜)p(坏瓜)=39∗39∗39∗49∗29∗69∗917=0.001291p(坏瓜|青绿,蜷缩,沉闷,稍糊,凹陷,硬滑) =p(青绿|坏瓜)*p(蜷缩|坏瓜)*p(沉闷|坏瓜)*p(稍糊|坏瓜)*p(凹陷|坏瓜)*p(硬滑|坏瓜)p(坏瓜)\\=\frac{3}{9}*\frac{3}{9}*\frac{3}{9}*\frac{4}{9}*\frac{2}{9}*\frac{6}{9}*\frac{9}{17}\\= 0.001291 p(坏瓜∣青绿,蜷缩,沉闷,稍糊,凹陷,硬滑)=p(青绿∣坏瓜)∗p(蜷缩∣坏瓜)∗p(沉闷∣坏瓜)∗p(稍糊∣坏瓜)∗p(凹陷∣坏瓜)∗p(硬滑∣坏瓜)p(坏瓜)=93∗93∗93∗94∗92∗96∗179=0.001291
显然,0.001615 > 0.001291,即瓜棚老板给我的瓜是好瓜。
那没事了,理亏跑路
二、代码实现
有了上述分析,我们能很容易的得出朴素贝叶斯的计算过程:
- 计算数据集中每个类别的概率
- 计算数据集中以每个类别为前提的情况下每一个特征的每一种情况的概率
- 根据测试集中的特征情况用上述概率计算出每一类的概率情况
- 将测试集归类为概率最大的那一类
具体代码实现如下:
西瓜数据集(csv格式):百度网盘 提取码:dy4c
import numpy as np
import pandas as pd# def feature_num(x): #每个特征有几种可能
# print(x.value_counts())
# return len(x.value_counts())def Y_prob(Y): #好瓜和坏瓜的各自的比重y = Y.valuestrue_prob = sum(y)/len(y)return {0:1-true_prob,1:true_prob}def x_y_prob(feature,y): #求p(特征|类别),用字典的形式存储返回x_y = {}n = len(y)for f in feature.columns:# for i in range(feature_num(feature[f])): #x_f = ifor i in feature[f].value_counts().keys():index = (y==1)index_True = y[y==True].indexindex_False = y[y==False].indexsample_True = data.loc[index_True, f] == iprob_true = len(sample_True.loc[sample_True == True])/len(index_True)strings_True = str(f)+'='+str(i)+'|'+'y=1'sample_False = data.loc[index_False, f] == iprob_False = len(sample_False.loc[sample_False == True]) / len(index_False)strings_False = str(f) + '=' + str(i) + '|' + 'y=0'x_y[strings_True] = prob_truex_y[strings_False] = prob_Falsereturn x_yif __name__ == '__main__':data = pd.read_csv('./data_word.csv')feature = data.columns.values[:-1]x_y = x_y_prob(data[feature],data['好瓜']) #用字典存储p(特征|类别)y_prob = Y_prob(data['好瓜'])test_data = ['青绿','蜷缩','沉闷','稍糊','凹陷','硬滑']#将测试数据转化为字典可以搜索的格式test_true = [str(feature[i]) + '=' + str(test_data[i]) + '|' + 'y=1' for i in range(len(feature))]test_false = [str(feature[i]) + '=' + str(test_data[i]) + '|' + 'y=0' for i in range(len(feature))]p_true = y_prob[1]p_false = y_prob[0]for i in range(len(feature)): #计算每一类的概率p_true *= x_y[test_true[i]]p_false *= x_y[test_false[i]]print('特征为:{}的瓜,是好瓜的概率为:{:.8f},不是好瓜的概率为:{:.8f}'.format(test_data,p_true,p_false))print('朴素贝叶斯最后预测:'+'是好瓜' if p_true>p_false else '不是好瓜')
运行结果:
三、参考文献
周志华 《机器学习》
李航《统计学习方法》
知乎专栏:https://zhuanlan.zhihu.com/p/26262151
玩梗归玩梗,希望这个版本能帮助大家理解书上复杂的公式
Python手撸机器学习系列(四):朴素贝叶斯(华强买瓜版)相关推荐
- 鸢尾花python贝叶斯分类_机器学习之鸢尾花-朴素贝叶斯方法
在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同. 对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系 ...
- Python手撸机器学习系列(十五):简单神经网络
目录 神经网络 1.简单算法推导 2.简单代码实现 3.矩阵形式优化 4.矩阵形式代码实现 神经网络 1.简单算法推导 搭建一个将二维平面坐标点分开的简单神经网络,输入维度为2*1(特征为2),神经网 ...
- Python手撸机器学习系列(十六):循环神经网络RNN的实现
目录 循环神经网络RNN 1.公式推导 2.代码实现 循环神经网络RNN 1.公式推导 对于该循环神经网络,以中间的RNN单元为例,推导前向传播: 对于Layer-1: z h = w i x + w ...
- 数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户...
原文链接:http://tecdat.cn/?p=23518 项目背景:银行的主要盈利业务靠的是贷款,这些客户中的大多数是存款大小不等的责任客户(存款人).银行拥有不断增长的客户(点击文末" ...
- 《机器学习实战》——朴素贝叶斯
一 前言 朴素贝叶斯算法是有监督的学习算法,解决的是分类问题,如客户是否流失.是否值得投资.信用等级评定等多分类问题.该算法的优点在于简单易懂.学习效率高.在某些领域的分类问题中能够与决策树.神经网络 ...
- 机器学习:基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测
机器学习:基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测 作者:i阿极 作者简介:Python领域新星作者.多项比赛获奖者:博主个人首页
- 《机器学习实战》朴素贝叶斯
机器学习实战的朴素贝叶斯一章中的源文件老是提示 IndexError: range object index out of range 看源码里怎么都不会溢出啊,除非minLen为0:所以看了下测试集 ...
- 机器学习实战之朴素贝叶斯
机器学习实战之朴素贝叶斯 一.朴素贝叶斯算法概述 1.贝叶斯决策理论 2.条件概率 3.全概率公式 4.贝叶斯推断 5.朴素贝叶斯推断 二.实战 三.总结 1.朴素贝叶斯推断的一些优点: 2.朴素贝叶 ...
- 机器学习面试题——朴素贝叶斯
机器学习面试题--朴素贝叶斯 提示:这些知识点也是大厂笔试经常考的题目,我记得阿里和京东就考!!!想必在互联网大厂就会用这些知识解决实际问题 朴素贝叶斯介绍一下 朴素贝叶斯优缺点 贝叶斯公式 朴素贝叶 ...
最新文章
- 目标检测一卷到底之后,终于有人为它挖了个新坑|CVPR2021 Oral
- BZOJ4196:[NOI2015]软件包管理器——题解
- 纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等),里面很多涉及到CSS3的一些属性。
- hs300 quant
- 数据分箱技术在Python中实现
- Geodatabase中基于规则的拓扑关系管理机制
- 投屏连接台式计算机,笔记本如何连接一体电脑进行投屏?
- mysql判断可用性,MySQL -- 主從復制的可靠性與可用性
- Oracle DBA课程系列笔记(4)
- 研究员详述巴基斯坦黑客如何攻击印度和阿富汗政府
- c语言实现循环队列初始化从键盘输入,2017年12月计算机二级考试C语言考前提分卷(2)...
- Fiddler4的下载与安装
- 中国地图经纬度范围,用多个矩形表示大致范围
- 四元数与欧拉角之间的换算关系
- 最新python面试题180题完整版带答案(转载加整理)
- 5.20爬虫结——Mu
- 【安全资讯】全球上市公司财报中“网络安全”的提及次数出现显著增长
- 2021年焊工(初级)免费试题及焊工(初级)实操考试视频
- rtsp播放h265(hevc)
- 安装activemq或者tomcat等启动时报错
热门文章
- win7打开信息服务器,怎么打开系统服务,笔者教你win7如何打开系统服务信息
- Android手写签批功能实现(适配Android6.0及以上)
- 52 8x8点阵c语言程序,51单片机8x8点阵显示程序
- esp8266 micropython开发环境搭建及点亮led
- 洁净工程洁净室施工计划的制定
- 我的Windows naked apps
- 清华大学王玉计算机,清华大学环境学院硕士研究生导师——王玉珏
- 超星python程序设计答案_超星Python程序设计免费答案
- linux查找一个文件中abc字段命令,Linux查询命令整理(示例代码)
- linux学习笔记--基础