机智能已经在了人类社会。uname -r 显示在使的水源版本。2.接连值与标称值混合且不论短缺失数据集。

图片 1

系统信息
arch 显示机器的处理器架构(1)
uname -m 显示机器的电脑架构(2)
uname -r 显示着使的基业版本
dmidecode -q 显示硬件系统部件 – (SMBIOS / DMI)
hdparm -i /dev/hda 罗列一个磁盘的架特性
hdparm -tT /dev/sda 在磁盘上实施测试性读取操作
cat /proc/cpuinfo 显示CPU info的信息
cat /proc/interrupts 显示暂停
cat /proc/meminfo 校验内存以
cat /proc/swaps 显示怎么swap被运用
cat /proc/version 显示内核的版
cat /proc/net/dev 显示网络适配器及统计
cat /proc/mounts 显示曾加载的文件系统
lspci -tv 罗列 PCI 设备
lsusb -tv 显示 USB 设备
date 显示系统日期
cal 2007 显示2007年之日历表
date 041217002007.00 设置日期和岁月 – 月日时分年.秒
clock -w 将时刻修改保存至 BIOS

正文对表决树算法进行简易的总结及梳理,并针对性著名的表决树算法ID3(Iterative
Dichotomiser
迭代二分器)进行落实,实现以Python语言,一词老梗,“人生苦短,我所以Python”,Python确实能省多语言方面的从,从而得以让我们注意于问题及化解问题的逻辑。

生物智能在过剩点优化今天之机智能,我们从没发现生物智能的基础原理。

 

冲不同的数量,我实现了三只版的ID3算法,复杂度逐步提升:

有人说AI不能够代替某些人类的劳作,尤其是创造性的,情感性之那些。先说创造性。AI虽然仍在前行初期,但时之系已得以应用GAN创造图像、音乐、文章了。

关机 (系统的关机、重开以及登出 )
shutdown -h now 关闭系统(1)
init 0 关闭系统(2)
telinit 0 关闭系统(3)
shutdown -h hours:minutes & 按预定时关闭系统
shutdown -c 取消以预约时间关闭系统
shutdown -r now 重启(1)
reboot 重启(2)
logout 注销

1.纯标称值无缺失失数据集

前程重成熟之AI甚至可如法炮制人之惊喜,有协调的“性格”。但本有这些的冷其实就算是数学模型的演算结果,并无是的确的有独立的意识,只是于表现现象上之“高仿生”。可是,生物我就是景,这种光景之默默,谁说即使不是数学了也。我们的心率、体温、血压、生长周期、生命周期等等,无不带有强烈的数理逻辑特征。那么结论是,仿生至少在观层面,与生物我可以得无真相差异。

 

2.总是值与标称值混合且无缺失失数据集

情怀,这是幽默的点,情绪是生物共有的,但不是机所有的。生物智能建立以神秘之心气上,而机械智能只能成立于多少算法上。所以片栽智能在精神上无法完成统一,机器智能无应当加入人类社会,而人口也非应于看成机器工具。

文件及目录
cd /home 进入 ‘/ home’ 目录’
cd .. 返回上一级目录
cd ../.. 返回上个别级目录
cd 进入个人的主目录
cd ~user1 进入个体的主目录
cd – 返回上次所在的目
pwd 显示工作途径
ls 查看目录中之公文
ls -F 查看目录中的文书
ls -l 显示文件和目录的详细资料
ls -a 显示隐藏文件
ls *[0-9]* 显示包含数字的文件称与目录名
tree 显示文件和目录由穷目录开始之树形结构(1)
lstree 显示文件和目录由穷目录开始的树形结构(2)
mkdir dir1 创建一个誉为 ‘dir1′ 的目录’
mkdir dir1 dir2 同时创造两只目录
mkdir -p /tmp/dir1/dir2 创建一个目录树
rm -f file1 删除一个叫作 ‘file1′ 的公文’
rmdir dir1 删除一个叫 ‘dir1′ 的目录’
rm -rf dir1 删除一个名 ‘dir1’ 的目录并以删除其情
rm -rf dir1 dir2 同时删除两单目录和它的情节
mv dir1 new_dir 重命名/移动 一个目录
cp file1 file2 复制一个文书
cp dir/* . 复制一个索引下的富有文件及当前工作目录
cp -a /tmp/dir1 . 复制一个目及当前工作目录
cp -a dir1 dir2 复制一个索引
ln -s file1 lnk1 创立一个针对文件或者目录的软链接
ln file1 lnk1 创办一个对文件或者目录的情理链接
touch -t 0712250000 file1 修改一个文书要目录的时日戳 – (YYMMDDhhmm)
file file1 outputs the mime type of the file as text
iconv -l 列有已清楚之编码
iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a
new from the given input file by assuming it is encoded in fromEncoding
and converting it to toEncoding.
find . -maxdepth 1 -name *.jpg -print -exec convert “{}” -resize 80×60
“thumbs/{}” \; batch resize files in the current directory and send
them to a thumbnails directory (requires convert from Imagemagick)

3.连续值和标称值混合,有少失数据集

然自切实角度看,显然我们社会不是这样发展的。机器智能已经入了人类社会,AI仿生机器人Sophia已经拿到了沙特人民身份,而几千年来人类社会自己虽然是把小阶层人类同胞当作工具使用,直至今天当众多丁的发现被按是这般。世界人权保障在腾飞而也许奴役的合计很麻烦杜绝,因为有人连可以如此想并交付实践来博利益,人的欲念理论及没数学模型的限,利益驱使总会打破或做社会平衡。

 

首先单算法参考了《机器上实战》的多数代码,第二、三独算法基于前的落实进行模块的加。

当青出于蓝竞争社会里,竞争者为了大有缕缕的调动个体进步策略,试图找竞争优势。近年来众多人在关怀情商以及智力的抵。目前当中原,主流舆论支持被商事的迈入,智商仍不足小看但众人认为智慧又麻烦在品质上加强,相对来说努力投资回报率更强的凡说道。其实这种理念本身吗是一律种具体逃避,本质上也属心灵鸡汤。既然攻克不了难以的,就选择重复简约的,但忽略了竞争门槛的因素。

文本搜索
find / -name file1 从 ‘/’ 开始上根文件系统搜索文件以及目录
find / -user user1 搜索属于用户 ‘user1’ 的文书与目录
find /home/user1 -name \*.bin 以目录 ‘/ home/user1′ 中摸索带有’.bin’
结尾的公文
find /usr/bin -type f -atime +100
搜索于过去100天外未被下过的尽文书
find /usr/bin -type f -mtime -10 搜索于10天内叫创造或者涂改了之文书
find / -name \*.rpm -exec chmod 755 ‘{}’ \; 搜索以 ‘.rpm’
结尾的公文并定义其权力
find / -xdev -name \*.rpm 搜索以 ‘.rpm’
结尾的文书,忽小光驱、捷盘等而活动设备
locate \*.ps 寻找以 ‘.ps’ 结尾的文件 – 先运行 ‘updatedb’ 命令
whereis halt 显示一个二进制文件、源码或man的位置
which halt 显示一个二进制文件或者可执行文件的完好路径

仲裁树简介

决定树算法不用说大家应都懂,是机器上的一个尽人皆知算法,由澳大利亚老牌计算机科学家Rose
Quinlan发表。

表决树是同样种监督上之归类算法,目的是学来一致发决策树,该树中间节点是数额特征,叶子节点是种,实际分类时根据树的布局,一步一步冲目前多少特征取值选择进哪一样粒子树,直到走及叶子节点,叶子节点的类就是是者决定树对这数量的求学结果。下图虽是均等发简单的决定树:

图片 2以此决定树用来判断一个装有纹理,触感,密度之西瓜是否是“好瓜”。

当起如此一个西瓜,纹理清晰,密度也0.333,触感硬滑,那么一旦你判定是否是一个“好瓜”,这时如通过决定树来判定,显然好一直本着纹理->清晰->密度<=0.382->否,即是瓜不是“好瓜”,一糟糕表决就如此成功了。正为决策树决策很有益,并且准确率为正如高,所以不时为用来举行分类器,也是“机器上十万分算法”之一C4.5的主干考虑。

修有同样粒决策树要考虑一个问题,即 根据数据集构建当前培训应该选择啊种特性作为树根,即分标准? 

考虑最好之情状,一开始摘之一特征,就拿数量集划分成,即在该特征上取某个值的皆是同等好像。

设想最老之景况,不断选择特征,划分后的数目集总是乱,就第二分拣任务以来,总是发生正类有负类,一直到特征全部之所以了了,划分的多寡集合还是生正发指,这时只能用投票法,正接近多就摘正类作为叶子,否则选负类。

于是得出了一般结论:
随着划分的展开,我们要选择一个风味,使得子节点包含的样书尽可能属于同一种类,即“纯度”越强越好。

因“纯度”的正儿八经不一,有三种算法:

1.ID3算法(Iterative
Dichotomiser
迭代二分器),也是本文要实现之算法,基于信息增益即信息熵来度量纯度

2.C4.5算法(Classifier
4.5),ID3 的晚算法,也是昆兰提出

3.CART算法(Classification
And Regression Tree),基于基尼指数度量纯度。

还是出外一样种沉思认为,智商是基因决定,所以很为难质变,但情商又多在人口的独立自主后天选择,所以全可操作。事实上,生物智能无是这样划分的。

 

ID3算法简介

信息熵是信息论中之一个重大概念,也被“香农熵”,香农先生的事迹相比多人口且任罢,一个人创造了平派别理论,牛之不行。香农理论遭遇一个可怜重大的风味就是是”熵“,即”信息内容的不确定性“,香农在拓展信息的定量测算的时光,明确地将信息量定义也随机不定性程度的滑坡。这就标志了外针对性信息的喻:信息是因此来压缩自由不定性的东西。或者发表也香农逆定义:信息是显而易见的充实。这为作证了仲裁树因熵作为划分选择的心胸标准的不易,即我们纪念还高效地起数额中获重新多信息,我们虽活该迅速下降不确定性,即减少”熵“。

信息熵定义为:

图片 3

D表示数据集,类别总数为|Y|,pk表示D中第k类样本所占据的百分比。根据该定义,Ent的价值更小,信息纯度越强。Ent的限是[0,log|Y|]

脚要摘之一属性进行分,要挨个考虑每个属性,假设当前考虑属性a,a的取值有|V|种,那么我们想取a作为划分属性,划分到|V|个子节点后,所有子节点的信熵之同就分后底音熵能够产生坏要命的压缩,减小的不过多之很属性就是咱选择的特性。

划分后底信息熵定义为:

图片 4 

故用属性a对样本集D进行划分的音信增益就是原来的音讯熵减去划分后的消息熵:

图片 5

ID3算法就是这样每次挑一个性对样本集进行划分,知道少栽情形而这个过程停止:

(1)某个子节点样本全部属于同一近似

(2)属性都用完了,这时候若果实节点样本或未一致,那么只能少数听从多数了

图片 6(图片来源于网络)

咱对任何事物的摸底在初通常会超负荷简单,现在针对智能就是这般。我们发现食指之左右脑其实际承受不同的东西,一边负责情绪,一边负责逻辑,那么既然生物层面还是这般,智能当然也是这般,那么简单了,分有一个智慧一个磋商共同组成智能。

挂载一个文件系统
mount /dev/hda2 /mnt/hda2 挂载一个称呼hda2的盘 – 确定目录 ‘/ mnt/hda2’
已经在
umount /dev/hda2 卸载一个名为hda2的盘 – 先从挂载点 ‘/ mnt/hda2’ 退出
fuser -km /mnt/hda2 当设备繁忙时强制卸载
umount -n /mnt/hda2 运行卸载操作而不写副 /etc/mtab 文件-
当文件呢单读或当磁盘写满时颇实用
mount /dev/fd0 /mnt/floppy 挂载一个软盘
mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom
mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom
mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom
mount -o loop file.iso /mnt/cdrom 挂载一个文件或者ISO镜像文件
mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统
mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备
mount -t smbfs -o username=user,password=pass //WinClient/share
/mnt/share 挂载一个windows网络共享

ID3算法实现(纯标称值)

倘若样本全部凡是标称值即距离散值的言语,会比较简单。

代码:

图片 7图片 8

from math import log
from operator import itemgetter
def createDataSet():            #创建数据集
    dataSet = [[1,1,'yes'],
               [1,1,'yes'],
               [1,0,'no'],
               [0,1,'no'],
               [0,1,'no']]
    featname = ['no surfacing', 'flippers']
    return dataSet,featname
def filetoDataSet(filename):
    fr = open(filename,'r')
    all_lines = fr.readlines()
    featname = all_lines[0].strip().split(',')[1:-1]
    print(featname)
    dataSet = []
    for line in all_lines[1:]:
        line = line.strip()
        lis = line.split(',')[1:]
        dataSet.append(lis)
    fr.close()
    return dataSet,featname
def calcEnt(dataSet):           #计算香农熵
    numEntries = len(dataSet)
    labelCounts = {}
    for featVec in dataSet:
        label = featVec[-1]
        if label not in labelCounts.keys():
            labelCounts[label] = 0
        labelCounts[label] += 1
    Ent = 0.0
    for key in labelCounts.keys():
        p_i = float(labelCounts[key]/numEntries)
        Ent -= p_i * log(p_i,2)
    return Ent
def splitDataSet(dataSet, axis, value):   #划分数据集,找出第axis个属性为value的数据
    returnSet = []
    for featVec in dataSet:
        if featVec[axis] == value:
            retVec = featVec[:axis]
            retVec.extend(featVec[axis+1:])
            returnSet.append(retVec)
    return returnSet
def chooseBestFeat(dataSet):
    numFeat = len(dataSet[0])-1
    Entropy = calcEnt(dataSet)
    DataSetlen = float(len(dataSet))
    bestGain = 0.0
    bestFeat = -1
    for i in range(numFeat):
        allvalue = [featVec[i] for featVec in dataSet]
        specvalue = set(allvalue)
        nowEntropy = 0.0
        for v in specvalue:
            Dv = splitDataSet(dataSet,i,v)
            p = len(Dv)/DataSetlen
            nowEntropy += p * calcEnt(Dv)
        if Entropy - nowEntropy > bestGain:
            bestGain = Entropy - nowEntropy
            bestFeat = i
    return bestFeat
def Vote(classList):
    classdic = {}
    for vote in classList:
        if vote not in classdic.keys():
            classdic[vote] = 0
        classdic[vote] += 1
    sortedclassDic = sorted(classdic.items(),key=itemgetter(1),reverse=True)
    return sortedclassDic[0][0]
def createDecisionTree(dataSet,featnames):
    featname = featnames[:]              ################
    classlist = [featvec[-1] for featvec in dataSet]  #此节点的分类情况
    if classlist.count(classlist[0]) == len(classlist):  #全部属于一类
        return classlist[0]
    if len(dataSet[0]) == 1:         #分完了,没有属性了
        return Vote(classlist)       #少数服从多数
    # 选择一个最优特征进行划分
    bestFeat = chooseBestFeat(dataSet)
    bestFeatname = featname[bestFeat]
    del(featname[bestFeat])     #防止下标不准
    DecisionTree = {bestFeatname:{}}
    # 创建分支,先找出所有属性值,即分支数
    allvalue = [vec[bestFeat] for vec in dataSet]
    specvalue = sorted(list(set(allvalue)))  #使有一定顺序
    for v in specvalue:
        copyfeatname = featname[:]
        DecisionTree[bestFeatname][v] = createDecisionTree(splitDataSet(dataSet,bestFeat,v),copyfeatname)
    return DecisionTree
if __name__ == '__main__':
    filename = "D:\\MLinAction\\Data\\西瓜2.0.txt"
    DataSet,featname = filetoDataSet(filename)
    #print(DataSet)
    #print(featname)
    Tree = createDecisionTree(DataSet,featname)
    print(Tree)

View Code

解释一下几独函数:

filetoDataSet(filename)
 将文件中之数码整理成数据集

calcEnt(dataSet)    
计算香农熵

splitDataSet(dataSet, axis, value)    
划分数据集,选择生第axis单特性的取值为value的拥有数据集,即D^v,并失去丢第axis独特性,因为无欲了

chooseBestFeat(dataSet)    
 根据消息增益,选择一个顶好之习性

Vote(classList)      
 如果属性用了,类别仍不均等,投票决定

createDecisionTree(dataSet,featnames)    
递归创建决策树


于是西瓜数据集2.0对算法进行测试,西瓜数据集见 西瓜数据集2.0,输出如下:

['色泽', '根蒂', '敲声', '纹理', '脐部', '触感']
{'纹理': {'清晰': {'根蒂': {'蜷缩': '是', '硬挺': '否', '稍蜷': {'色泽': {'青绿': '是', '乌黑': {'触感': {'硬滑': '是', '软粘': '否'}}}}}}, '稍糊': {'触感': {'硬滑': '否', '软粘': '是'}}, '模糊': '否'}}

为了能够体现决策树的优越性即决定方便,这里因matplotlib模块编写可视化函数treePlot,对转移的表决树进行可视化,可视化结果如下:

图片 9

 

由数量最少,没有安装测试数据为证其准确度,但是自背后会根据乳腺癌的例证进行准确度的测试的,下面进入下有:

这种分割忽略了智能的完好系统属性。大脑虽诚是区域分工的布局,但正常的智能运作必须是只了断整体。在效益范围,掌管情绪的区域要吃侵蚀,势必也会潜移默化至逻辑,反之亦然(这里影响是中性的,可能是糟糕的影响,也恐怕致“超常”影响)。

 

发出连续值的情

生连续值的景如果 西瓜数据集3.0 

一个性有酷多种取值,我们定不克每个取值都举行一个分,这时候要对连续属性进行离散化,有几乎种植艺术供选择,其中有数种是:

1.对准各个一样近乎别的数据集的连续值取平均值,再取各类的平均值的平均值作为划分点,将连属性化为少类成为离散属性

2.C4.5行使的第二划分效仿,排序离散属性,取诸半只底中心作为划分点的候选点,计算为每个划分点划分数据集的音讯增益,取最好可怜之不行划分点将接连属性化为寡好像成为离散属性,用该属性进行私分的信增益就是正计算的极端特别信增益。公式如下:

图片 10

这边用第二栽,并当读书前对连属性进行离散化。增加处理的代码如下:

def splitDataSet_for_dec(dataSet, axis, value, small):
    returnSet = []
    for featVec in dataSet:
        if (small and featVec[axis] <= value) or ((not small) and featVec[axis] > value):
            retVec = featVec[:axis]
            retVec.extend(featVec[axis+1:])
            returnSet.append(retVec)
    return returnSet
def DataSetPredo(filename,decreteindex):
    dataSet,featname = filetoDataSet(filename)
    Entropy = calcEnt(dataSet)
    DataSetlen = len(dataSet)
    for index in decreteindex:     #对每一个是连续值的属性下标
        for i in range(DataSetlen):
            dataSet[i][index] = float(dataSet[i][index])
        allvalue = [vec[index] for vec in dataSet]
        sortedallvalue = sorted(allvalue)
        T = []
        for i in range(len(allvalue)-1):        #划分点集合
            T.append(float(sortedallvalue[i]+sortedallvalue[i+1])/2.0)
        bestGain = 0.0
        bestpt = -1.0
        for pt in T:          #对每个划分点
            nowent = 0.0
            for small in range(2):   #化为正类负类
                Dt = splitDataSet_for_dec(dataSet, index, pt, small)
                p = len(Dt) / float(DataSetlen)
                nowent += p * calcEnt(Dt)
            if Entropy - nowent > bestGain:
                bestGain = Entropy-nowent
                bestpt = pt
        featname[index] = str(featname[index]+"<="+"%.3f"%bestpt)
        for i in range(DataSetlen):
            dataSet[i][index] = "是" if dataSet[i][index] <= bestpt else "否"
    return dataSet,featname

着重是优先处理函数DataSetPredo,对数据集提前离散化,然后再拓展上,学习代码类似。输出的裁定树如下:

图片 11

于人类一生的智能发展过程被,情绪是脚主导因素。我们发现毛毛不具有逻辑表现能力,只有情绪表现能力,随着年纪增长,幼年人类个体趋于具备更引人注目的逻辑表现能力,而一个丁能够达标的理智水平高度往往和该心态控制力正相关。而作为最,情绪控制失调者,其理智水平普遍受限。

磁盘空间
df -h 显示就挂载的分区列表
ls -lSr |more 以尺寸大小排列文件与目录
du -sh dir1 估算目录 ‘dir1′ 已经采取的磁盘空间’
du -sk * | sort -rn 以容量大小为根据各个显示文件和目录的大小
rpm -q -a –qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n
以大小也依据各个显示就安装的rpm包所使用的空间 (fedora, redhat类系统)
dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n
以大小为基于显示就装的deb包所使用的空间 (ubuntu, debian类系统)

起缺乏失值的情状

数码有欠失值是普遍的情,我们不好直接丢弃这些数据,因为这样会损失大量数额,不划算,但是差失值我们啊无能为力看清它们的取值。怎么惩罚呢,办法或有些。

考虑个别只问题: 

1.起缺乏失值时怎样进行分割选择

2.就选择分属性,有差失值的样本划不分开,如何划分?

问题1:产生缺乏失值时怎么进展分割选择**

主干考虑是进行极端优属性选择时,先只考虑无缺失失值样本,然后又乘以相应比例,得到在全样本集上之约情况。连带考虑到第二独问题吧,考虑让各一个样书一个权重,此时每个样本不再总是为作为一个独自样本,这样好第二只问题的缓解:即要样本在属性a上之值缺失,那么用那个当是所有值都获,只不过取每个值的权重不平等,每个值的权重参考该值在无缺失值样本中之比例,简单地游说,比如以无缺失值样本集中,属性a取去两独值1和2,并且获得1之权重和占用整个权重和1/3,而落2的权重和占有2/3,那么根据该属性对样本集进行划分时,遇到该属性上有少失值的样书,那么我们觉得该样本取值2的可能还怪,于是用该样本的权重乘以2/3由到取值为2的样本集中继续拓展分割构造决策树,而随着1/3划及取值为1底样书集中继续组织。不知道自己说清楚没有。

公式如下:

图片 12

其中,D~表示数据集D在属性a上凭短缺失值的样书,根据它们来判定a属性的三六九等,rho(即‘lou’)表示属性a的无缺失值样本占所有样本的百分比,p~_k表示无缺失失值样本中第k像样所占用的百分比,r~_v表示不管缺失失值样本在属于性a上取值为v的样书所占用的百分比。

每当分割样本时,如果出缺乏失值,则拿样本划分到所有子节点,在属于性a取值v的子节点上的权重为r~_v
* 原来的权重。

再度详细的解读参考《机器上》P86-87。

基于权重法修改后底ID3算法实现如下:

图片 13图片 14

from math import log
from operator import itemgetter

def filetoDataSet(filename):
    fr = open(filename,'r')
    all_lines = fr.readlines()
    featname = all_lines[0].strip().split(',')[1:-1]
    dataSet = []
    for line in all_lines[1:]:
        line = line.strip()
        lis = line.split(',')[1:]
        if lis[-1] == '2':
            lis[-1] = '良'
        else:
            lis[-1] = '恶'
        dataSet.append(lis)
    fr.close()
    return dataSet,featname

def calcEnt(dataSet, weight):           #计算权重香农熵
    labelCounts = {}
    i = 0
    for featVec in dataSet:
        label = featVec[-1]
        if label not in labelCounts.keys():
            labelCounts[label] = 0
        labelCounts[label] += weight[i]
        i += 1
    Ent = 0.0
    for key in labelCounts.keys():
        p_i = float(labelCounts[key]/sum(weight))
        Ent -= p_i * log(p_i,2)
    return Ent

def splitDataSet(dataSet, weight, axis, value, countmissvalue):   #划分数据集,找出第axis个属性为value的数据
    returnSet = []
    returnweight = []
    i = 0
    for featVec in dataSet:
        if featVec[axis] == '?' and (not countmissvalue):
            continue
        if countmissvalue and featVec[axis] == '?':
            retVec = featVec[:axis]
            retVec.extend(featVec[axis+1:])
            returnSet.append(retVec)
        if featVec[axis] == value:
            retVec = featVec[:axis]
            retVec.extend(featVec[axis+1:])
            returnSet.append(retVec)
            returnweight.append(weight[i])
        i += 1
    return returnSet,returnweight

def splitDataSet_for_dec(dataSet, axis, value, small, countmissvalue):
    returnSet = []
    for featVec in dataSet:
        if featVec[axis] == '?' and (not countmissvalue):
            continue
        if countmissvalue and featVec[axis] == '?':
            retVec = featVec[:axis]
            retVec.extend(featVec[axis+1:])
            returnSet.append(retVec)
        if (small and featVec[axis] <= value) or ((not small) and featVec[axis] > value):
            retVec = featVec[:axis]
            retVec.extend(featVec[axis+1:])
            returnSet.append(retVec)
    return returnSet

def DataSetPredo(filename,decreteindex):     #首先运行,权重不变为1
    dataSet,featname = filetoDataSet(filename)
    DataSetlen = len(dataSet)
    Entropy = calcEnt(dataSet,[1 for i in range(DataSetlen)])
    for index in decreteindex:     #对每一个是连续值的属性下标
        UnmissDatalen = 0
        for i in range(DataSetlen):      #字符串转浮点数
            if dataSet[i][index] != '?':
                UnmissDatalen += 1
                dataSet[i][index] = int(dataSet[i][index])
        allvalue = [vec[index] for vec in dataSet if vec[index] != '?']
        sortedallvalue = sorted(allvalue)
        T = []
        for i in range(len(allvalue)-1):        #划分点集合
            T.append(int(sortedallvalue[i]+sortedallvalue[i+1])/2.0)
        bestGain = 0.0
        bestpt = -1.0
        for pt in T:          #对每个划分点
            nowent = 0.0
            for small in range(2):   #化为正类(1)负类(0)
                Dt = splitDataSet_for_dec(dataSet, index, pt, small, False)
                p = len(Dt) / float(UnmissDatalen)
                nowent += p * calcEnt(Dt,[1.0 for i in range(len(Dt))])
            if Entropy - nowent > bestGain:
                bestGain = Entropy-nowent
                bestpt = pt
        featname[index] = str(featname[index]+"<="+"%d"%bestpt)
        for i in range(DataSetlen):
            if dataSet[i][index] != '?':
                dataSet[i][index] = "是" if dataSet[i][index] <= bestpt else "否"
    return dataSet,featname

def getUnmissDataSet(dataSet, weight, axis):
    returnSet = []
    returnweight = []
    tag = []
    i = 0
    for featVec in dataSet:
        if featVec[axis] == '?':
            tag.append(i)
        else:
            retVec = featVec[:axis]
            retVec.extend(featVec[axis+1:])
            returnSet.append(retVec)
        i += 1
    for i in range(len(weight)):
        if i not in tag:
            returnweight.append(weight[i])
    return returnSet,returnweight

def printlis(lis):
    for li in lis:
        print(li)

def chooseBestFeat(dataSet,weight,featname):
    numFeat = len(dataSet[0])-1
    DataSetWeight = sum(weight)
    bestGain = 0.0
    bestFeat = -1
    for i in range(numFeat):
        UnmissDataSet,Unmissweight = getUnmissDataSet(dataSet, weight, i)   #无缺失值数据集及其权重
        Entropy = calcEnt(UnmissDataSet,Unmissweight)      #Ent(D~)
        allvalue = [featVec[i] for featVec in dataSet if featVec[i] != '?']
        UnmissSumWeight = sum(Unmissweight)
        lou = UnmissSumWeight / DataSetWeight        #lou
        specvalue = set(allvalue)
        nowEntropy = 0.0
        for v in specvalue:      #该属性的几种取值
            Dv,weightVec_v = splitDataSet(dataSet,Unmissweight,i,v,False)   #返回 此属性为v的所有样本 以及 每个样本的权重
            p = sum(weightVec_v) / UnmissSumWeight          #r~_v = D~_v / D~
            nowEntropy += p * calcEnt(Dv,weightVec_v)
        if lou*(Entropy - nowEntropy) > bestGain:
            bestGain = Entropy - nowEntropy
            bestFeat = i
    return bestFeat

def Vote(classList,weight):
    classdic = {}
    i = 0
    for vote in classList:
        if vote not in classdic.keys():
            classdic[vote] = 0
        classdic[vote] += weight[i]
        i += 1
    sortedclassDic = sorted(classdic.items(),key=itemgetter(1),reverse=True)
    return sortedclassDic[0][0]

def splitDataSet_adjustWeight(dataSet,weight,axis,value,r_v):
    returnSet = []
    returnweight = []
    i = 0
    for featVec in dataSet:
        if featVec[axis] == '?':
            retVec = featVec[:axis]
            retVec.extend(featVec[axis+1:])
            returnSet.append(retVec)
            returnweight.append(weight[i] * r_v)
        elif featVec[axis] == value:
            retVec = featVec[:axis]
            retVec.extend(featVec[axis+1:])
            returnSet.append(retVec)
            returnweight.append(weight[i])
        i += 1
    return returnSet,returnweight

def createDecisionTree(dataSet,weight,featnames):
    featname = featnames[:]              ################
    classlist = [featvec[-1] for featvec in dataSet]  #此节点的分类情况
    if classlist.count(classlist[0]) == len(classlist):  #全部属于一类
        return classlist[0]
    if len(dataSet[0]) == 1:         #分完了,没有属性了
        return Vote(classlist,weight)       #少数服从多数
    # 选择一个最优特征进行划分
    bestFeat = chooseBestFeat(dataSet,weight,featname)
    bestFeatname = featname[bestFeat]
    del(featname[bestFeat])     #防止下标不准
    DecisionTree = {bestFeatname:{}}
    # 创建分支,先找出所有属性值,即分支数
    allvalue = [vec[bestFeat] for vec in dataSet if vec[bestFeat] != '?']
    specvalue = sorted(list(set(allvalue)))  #使有一定顺序
    UnmissDataSet,Unmissweight = getUnmissDataSet(dataSet, weight, bestFeat)   #无缺失值数据集及其权重
    UnmissSumWeight = sum(Unmissweight)      # D~
    for v in specvalue:
        copyfeatname = featname[:]
        Dv,weightVec_v = splitDataSet(dataSet,Unmissweight,bestFeat,v,False)   #返回 此属性为v的所有样本 以及 每个样本的权重
        r_v = sum(weightVec_v) / UnmissSumWeight          #r~_v = D~_v / D~
        sondataSet,sonweight = splitDataSet_adjustWeight(dataSet,weight,bestFeat,v,r_v)
        DecisionTree[bestFeatname][v] = createDecisionTree(sondataSet,sonweight,copyfeatname)
    return DecisionTree

if __name__ == '__main__':
    filename = "D:\\MLinAction\\Data\\breastcancer.txt"
    DataSet,featname = DataSetPredo(filename,[0,1,2,3,4,5,6,7,8])
    Tree = createDecisionTree(DataSet,[1.0 for i in range(len(DataSet))],featname)
    print(Tree)

View Code

产生差失值的动静只要 西瓜数据集2.0alpha

试验结果:

图片 15

另一个维度的绝是天才的留存。天才指的凡当某某一个应用领域具备全能力的私家。我们发现,天才型人的心气体系一样异于常人,以至于他们的脾气普遍有独特性,甚至具备社交障碍、轻微自闭等心理特征。

返回到部索引 ^

以乳腺癌数据集上的测试与见

发生矣算法,我们当然想做一定的测试看无异关押算法的变现。这里自己选择了威斯康辛女性乳腺癌的数码。

数据总共发生9列,每一样列分别代表,以逗号分割

1 Sample
code number (病人ID)
2 Clump
Thickness 肿块厚度
3
Uniformity of Cell Size 细胞大小的均匀性
4
Uniformity of Cell Shape 细胞形状的均匀性
5
Marginal Adhesion 边缘粘
6 Single
Epithelial Cell Size 单上皮细胞的尺寸
7 Bare
Nuclei 裸核
8 Bland
Chromatin 乏味染色体
9 Normal
Nucleoli 正常核
10
Mitoses 有丝分裂
11 Class:
2 for benign, 4 formalignant(恶性或良性分类)

[from
Toby]

累计700久左右的多寡,选取最后80长达作为测试集,前面作为训练集,进行上。

动用分类器的代码如下:

import treesID3 as id3
import treePlot as tpl
import pickle

def classify(Tree, featnames, X):
    classLabel = "未知"
    root = list(Tree.keys())[0]
    firstGen = Tree[root]
    featindex = featnames.index(root)  #根节点的属性下标
    for key in firstGen.keys():   #根属性的取值,取哪个就走往哪颗子树
        if X[featindex] == key:
            if type(firstGen[key]) == type({}):
                classLabel = classify(firstGen[key],featnames,X)
            else:
                classLabel = firstGen[key]
    return classLabel

def StoreTree(Tree,filename):
    fw = open(filename,'wb')
    pickle.dump(Tree,fw)
    fw.close()

def ReadTree(filename):
    fr = open(filename,'rb')
    return pickle.load(fr)

if __name__ == '__main__':
    filename = "D:\\MLinAction\\Data\\breastcancer.txt"
    dataSet,featnames = id3.DataSetPredo(filename,[0,1,2,3,4,5,6,7,8])
    Tree = id3.createDecisionTree(dataSet[:620],[1.0 for i in range(len(dataSet))],featnames)
    tpl.createPlot(Tree)
    storetree = "D:\\MLinAction\\Data\\decTree.dect"
    StoreTree(Tree,storetree)
    #Tree = ReadTree(storetree)
    i = 1
    cnt = 0
    for lis in dataSet[620:]:
        judge = classify(Tree,featnames,lis[:-1])
        shouldbe = lis[-1]
        if judge == shouldbe:
            cnt += 1
        print("Test %d was classified %s, it's class is %s %s" %(i,judge,shouldbe,"=====" if judge==shouldbe else ""))
        i += 1
    print("The Tree's Accuracy is %.3f" % (cnt / float(i)))

教练出的裁决树如下:

图片 16

末之正确率可以看出:

图片 17

正确率约为96%横,算是不异之分类器了。

我的乳腺癌数据见:http://7xt9qk.com2.z0.glb.clouddn.com/breastcancer.txt

时至今日,决策树算法ID3的实现得了,下面考虑因基尼指数与消息增益率进行分割选择,以及考虑实现剪枝过程,因为咱们得看来地方训练有的裁决树还留存在无数冗余分支,是盖实现过程遭到,由于数据量太要命,每个分支都未了纯净,所以会见创造为下的道岔,但是分支投票的结果还要是相同的,而且数据量再不行,特征数还多以来,决策树会非常深非常复杂,所以剪枝一般是必然做的一样步。剪枝分为先剪枝和晚剪枝,如果细说的讲话可以描绘很多了。

此文亦可见:这里
参考资料:《机器上》《机器上实战》通过本次实战也发现了立半本书中之一些谬误的处。

lz初学机器上不久,如产生错漏的处请求多担待指出还是各位有什么想法要见欢迎评论去报自己:)

根据上述佐证可以提出一个如:生物智能的底部机制是情绪的奥妙发展系统及管理体系的立,其中富含极为深细复杂的逻辑性,当远在具体应用环境中时,不同的心境体系反映出的智能程度具有强烈差异。

用户以及群组
groupadd group_name 创建一个新用户组
groupdel group_name 删除一个用户组
groupmod -n new_group_name old_group_name 重命名一个用户组
useradd -c “Name Surname ” -g admin -d /home/user1 -s /bin/bash user1
创建一个属 “admin” 用户组的用户
useradd user1 创建一个初用户
userdel -r user1 删除一个用户 ( ‘-r’ 排除主目录)
usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1
修改用户属性
passwd 修改口令
passwd user1 修改一个用户之口令 (只允许root执行)
chage -E 2005-12-31 user1 设置用户口令的失灵期限
pwck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及在的用户
grpck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的群组
newgrp group_name 登陆进一个初的群组以反新创造文件的预设群组

如要成立,则我们现器商培训确是合智能优化的关键手段,只是需要多精致的训练计划,目前尚不够这上面的钻。但是当未来,AI技术刚刚可以拉这地方的研究,让咱更是了解自己,并再度擅长提升自己。

返到部索引 ^

文本之权限 – 使用 “+” 设置权限,使用 “-” 用于取消
ls -lh 显示权限
ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示
chmod ugo+rwx directory1
设置目录的有着人(u)、群组(g)以及其他人(o)以朗诵(r
)、写(w)和实行(x)的权力
chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权
chown user1 file1 改变一个文书之所有人属性
chown -R user1 directory1
改变一个索引的享有人属性并而改变改目录下所有文件的性能
chgrp group1 file1 改变文件之群组
chown user1:group1 file1 改变一个文件的持有人及群组属性
find / -perm -u+s 罗列一个体系被兼有以了SUID控制的公文
chmod u+s /bin/file1 设置一个二进制文件之 SUID 位 –
运行该文件的用户也受与与所有者同的权
chmod u-s /bin/file1 禁用一个二进制文件之 SUID位
chmod g+s /home/public 设置一个目的SGID 位 – 类似SUID
,不过这是针对目录的
chmod g-s /home/public 禁用一个目的 SGID 位
chmod o+t /home/public 设置一个文件之 STIKY 位 –
只同意合法拥有人数抹文件
chmod o-t /home/public 禁用一个索引的 STIKY 位

回到部索引 ^

文件的非常规性质 – 使用 “+” 设置权限,使用 “-” 用于取消
chattr +a file1 只同意为增加方式读写文件
chattr +c file1 允许这个文件能够给基本自动削减/解压
chattr +d file1 在进行文件系统备份时,dump程序用忽略这个文件
chattr +i file1 设置成不可变的公文,不克于删去、修改、重命名或者链接
chattr +s file1 允许一个文件为平安地抹
chattr +S file1
一旦应用程序对斯文件实行了描写操作,使系统当下将修改的结果写到磁盘
chattr +u file1 若文件给去除,系统会容许你于今后恢复是给删的文本
lsattr 显示特殊的习性

回来到部索引 ^

包装和压缩文件
bunzip2 file1.bz2 解压一个称呼 ‘file1.bz2’的文书
bzip2 file1 压缩一个誉为 ‘file1’ 的公文
gunzip file1.gz 解压一个名叫 ‘file1.gz’的文件
gzip file1 压缩一个叫做 ‘file1’的文书
gzip -9 file1 最要命程度减少
rar a file1.rar test_file 创建一个叫 ‘file1.rar’ 之管
rar a file1.rar file1 file2 dir1 同时压缩 ‘file1’, ‘file2’ 以及目录
‘dir1’
rar x file1.rar 解压rar包
unrar x file1.rar 解压rar包
tar -cvf archive.tar file1 创建一个非压缩的 tarball
tar -cvf archive.tar file1 file2 dir1 创建一个暗含了 ‘file1’, ‘file2’
以及 ‘dir1’的档案文件
tar -tf archive.tar 显示一个包中的情
tar -xvf archive.tar 释放一个担保
tar -xvf archive.tar -C /tmp 将缩减包释放到 /tmp目录下
tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包
tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包
tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包
tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包
zip file1.zip file1 创建一个zip格式的压缩包
zip -r file1.zip file1 file2 dir1
将几个文本以及目录同时抽成一个zip格式的压缩包
unzip file1.zip 解压一个zip格式压缩包

归来到部索引 ^

RPM 包 – (Fedora, Redhat及类似系统)
rpm -ivh package.rpm 安装一个rpm包
rpm -ivh –nodeeps package.rpm 安装一个rpm包要忽视依赖关系警告
rpm -U package.rpm 更新一个rpm包但不更改其配备文件
rpm -F package.rpm 更新一个确定就装之rpm包
rpm -e package_name.rpm 删除一个rpm包
rpm -qa 出示系统受拥有已设置之rpm包
rpm -qa | grep httpd 显示所有名称中含有 “httpd” 字样的rpm包
rpm -qi package_name 获得一个早就装包之特有信息
rpm -qg “System Environment/Daemons” 显示一个组件的rpm包
rpm -ql package_name 显示一个就装的rpm包提供的公文列表
rpm -qc package_name 显示一个都设置的rpm包提供的安排文件列表
rpm -q package_name –whatrequires 显示和一个rpm包在因关系之列表
rpm -q package_name –whatprovides 显示一个rpm包所占有的体积
rpm -q package_name –scripts 显示在装置/删除期间所执的脚本l
rpm -q package_name –changelog 显示一个rpm包的修改历史
rpm -qf /etc/httpd/conf/httpd.conf 确认所被的文书由哪个rpm包所提供
rpm -qp package.rpm -l 显示由一个从来不安装的rpm包提供的文书列表
rpm –import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书
rpm –checksig package.rpm 认可一个rpm包的完整性
rpm -qa gpg-pubkey 确认就装的有rpm包的完整性
rpm -V package_name 检查文件尺寸、
许可、类型、所有者、群组、MD5检查以及最终修改时
rpm -Va 检查系统受到有已设置之rpm包- 小心用
rpm -Vp package.rpm 确认一个rpm包还未设置
rpm2cpio package.rpm | cpio –extract –make-directories *bin*
从一个rpm包运行可执行文件
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm
从一个rpm源码安装一个构建好之包
rpmbuild –rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包

返到部索引 ^

YUM 软件包升级器 – (Fedora, RedHat及类似系统)
yum install package_name 下载并安装一个rpm包
yum localinstall package_name.rpm
将安装一个rpm包,使用你协调的软件仓库为您解决所有因关系
yum update package_name.rpm 更新当前系统中有安装之rpm包
yum update package_name 更新一个rpm包
yum remove package_name 删除一个rpm包
yum list 列出当下系统受到设置的备保险
yum search package_name 于rpm仓库中找软件包
yum clean packages 清理rpm缓存删除下载的保证
yum clean headers 删除所有头文件
yum clean all 删除所有缓存的包和头文件

回到到部索引 ^

DEB 包 (Debian, Ubuntu 以及近似系统)
dpkg -i package.deb 安装/更新一个 deb 包
dpkg -r package_name 于网去一个 deb 包
dpkg -l 显示系统面临存有已装之 deb 包
dpkg -l | grep httpd 显示有名称被含 “httpd” 字样的deb包
dpkg -s package_name 获得已装在系统中一个出奇包之信
dpkg -L package_name 显示系统遭到一度装之一个deb包所提供的文件列表
dpkg –contents package.deb 显示没有安装的一个包所提供的文本列表
dpkg -S /bin/ping 确认所让的文件由谁deb包供

回去到部索引 ^

APT 软件工具 (Debian, Ubuntu 以及近似系统)
apt-get install package_name 安装/更新一个 deb 包
apt-cdrom install package_name 从光盘安装/更新一个 deb 包
apt-get update 升级列表中的软件包
apt-get upgrade 升级具有都装的软件
apt-get remove package_name 从系统去一个deb包
apt-get check 确认因的软件仓库正确
apt-get clean 从下载的软件包吃清理缓存
apt-cache search searched-package 返回包含所要找字符串的软件包号

回来到部索引 ^

查看文件内容
cat file1 从第一单字节开始正为查看文件之情
tac file1 从最终一行开始倒转朝查看一个文书之情节
more file1 查看一个加上文件之内容
less file1 类似于 ‘more’
命令,但是它们同意在文件被同正向操作一样的反向操作
head -2 file1 查看一个文件的前片执行
tail -2 file1 查看一个文件的最后两执
tail -f /var/log/messages 实时翻被上加至一个文本被之情节

归来到部索引 ^

文本处理
cat file1 file2 … | command <> file1_in.txt_or_file1_out.txt
general syntax for text manipulation using PIPE, STDIN and STDOUT
cat file1 | command( sed, grep, awk, grep, etc…) > result.txt
合并一个文书的详细说明文本,并将简介写入一个新文件中
cat file1 | command( sed, grep, awk, grep, etc…) >> result.txt
合并一个文书的详实说明文本,并将简介写入一个早就部分文件被
grep Aug /var/log/messages 于文书 ‘/var/log/messages’中寻觅关键词”Aug”
grep ^Aug /var/log/messages 在文书
‘/var/log/messages’中搜索以”Aug”开始之词汇
grep [0-9] /var/log/messages 选择 ‘/var/log/messages’
文件被颇具包含数字之执行
grep Aug -R /var/log/* 在目录 ‘/var/log’
以及随后的目中查找字符串”Aug”
sed ‘s/stringa1/stringa2/g’ example.txt 将example.txt文件中之 “string1”
替换成 “string2”
sed ‘/^$/d’ example.txt 从example.txt文件中剔除所有空白行
sed ‘/ *#/d; /^$/d’ example.txt
从example.txt文件被除去所有注释和空白行
echo ‘esempio’ | tr ‘[:lower:]’ ‘[:upper:]’ 合并上下单元格内容
sed -e ‘1d’ result.txt 从文件example.txt 中祛第一实施
sed -n ‘/stringa1/p’ 查看只含词汇 “string1″的实践
sed -e ‘s/ *$//’ example.txt 删除每一行最后之空白字符
sed -e ‘s/stringa1//g’ example.txt 从文档中唯有去词汇 “string1”
并保存剩余全部
sed -n ‘1,5p;5q’ example.txt 查看从第一履行及第5履行内容
sed -n ‘5p;5q’ example.txt 查看第5行
sed -e ‘s/00*/0/g’ example.txt 用么零替换多单七零八落
cat -n file1 标示文件之行数
cat example.txt | awk ‘NR%2==1’ 删除example.txt文件被的享有偶数行
echo a b c | awk ‘{print $1}’ 查看一行首先苑
echo a b c | awk ‘{print $1,$3}’ 查看一行的第一与老三栏
paste file1 file2 合并两单文件要鲜苑的情节
paste -d ‘+’ file1 file2 合并两个文件要少于圈的内容,中间用”+”区分
sort file1 file2 排序两独文件的情
sort file1 file2 | uniq 取出两单公文的并集(重复的推行仅保留一份)
sort file1 file2 | uniq -u 删除交集,留下别样的施行
sort file1 file2 | uniq -d
取出个别单文本的良莠不齐(只留下同时存在被简单个文本中的文件)
comm -1 file1 file2 比较简单个公文之内容就去 ‘file1’ 所包含的情
comm -2 file1 file2 比较少单公文之情节无非去 ‘file2’ 所富含的始末
comm -3 file1 file2 比较有限独文本的始末无非去两单文件共有的部分

回到到部索引 ^

字符设置以及文件格式转换
dos2unix filedos.txt fileunix.txt
将一个文本文件的格式从MSDOS转换成UNIX
unix2dos fileunix.txt filedos.txt
用一个文件文件的格式从UNIX转换成MSDOS
recode ..HTML < page.txt > page.html 将一个文本文件转换成html
recode -l | more 显示所有允许的变换格式

回来到部索引 ^

文件系统分析
badblocks -v /dev/hda1 检查磁盘hda1达到的老大磁块
fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性
fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性
fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性
fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性
fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性
dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性

回来到部索引 ^

初始化一个文件系统
mkfs /dev/hda1 在hda1分割区创建一个文件系统
mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统
mke2fs -j /dev/hda1 在hda1细分区创建一个linux ext3(日志型)的文件系统
mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统
fdformat -n /dev/fd0 格式化一个软盘
mkswap /dev/hda3 创建一个swap文件系统

回到部索引 ^

SWAP文件系统
mkswap /dev/hda3 创建一个swap文件系统
swapon /dev/hda3 启用一个新的swap文件系统
swapon /dev/hda2 /dev/hdb3 启用两独swap分区

回来到部索引 ^

备份
dump -0aj -f /tmp/home0.bak /home 制作一个 ‘/home’ 目录的完整备份
dump -1aj -f /tmp/home0.bak /home 制作一个 ‘/home’ 目录的交互式备份
restore -if /tmp/home0.bak 还原一个交互式备份
rsync -rogpav –delete /home /tmp 同步两止的目
rsync -rogpav -e ssh –delete /home ip_address:/tmp 通过SSH通道rsync
rsync -az -e ssh –delete ip_addr:/home/public /home/local
通过ssh和削减将一个长距离目录并到地头目录
rsync -az -e ssh –delete /home/local ip_addr:/home/public
通过ssh和削减将本地目录并到长途目录
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz’
通过ssh在远距离主机上实施同一破备份本地磁盘的操作
dd if=/dev/sda of=/tmp/file1 备份磁盘内容及一个文本
tar -Puf backup.tar /home/user 执行同一不好对 ‘/home/user’
目录的交互式备份操作
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ &&
tar x -p’ 通过ssh在长距离目录中复制一个目录内容
( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x
-p’ 通过ssh在长距离目录中复制一个地方目录
tar cf – . | (cd /tmp/backup ; tar xf – )
本地将一个目复制到其它一个地方,保留原权限和链接
find /home/user1 -name ‘*.txt’ | xargs cp -av
–target-directory=/home/backup/ –parents 从一个目查找并复制所有以
‘.txt’ 结尾的公文及其他一个目录
find /var/log -name ‘*.log’ | tar cv –files-from=- | bzip2 >
log.tar.bz2 找所有为 ‘.log’ 结尾的文书并做成一个bzip包
dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个以 MBR (Master Boot
Record)内容复制到软盘的动作
dd if=/dev/fd0 of=/dev/hda bs=512 count=1
起已保存及软盘的备份中平复MBR内容

回来到部索引 ^

光盘
cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force
清空一个可复写的光盘内容
mkisofs /dev/cdrom > cd.iso 在磁盘上创造一个光盘的iso镜像文件
mkisofs /dev/cdrom | gzip > cd_iso.gz
以磁盘上创设一个减了的光盘iso镜像文件
mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso
data_cd 创建一个目的iso镜像文件
cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom –
刻录一个减小了的ISO镜像文件
mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件
cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件被
cd-paranoia — “-3” 从一个CD光盘转录音轨到 wav 文件被(参数-3)
cdrecord –scanbus 扫描总线以识别scsi通道
dd if=/dev/hdc | md5sum 校验一个装置的md5sum编码,例如一摆设 CD

回到到部索引 ^

网 – (以太网和WIFI无线)
ifconfig eth0 显示一个以太网卡的布局
ifup eth0 启用一个 ‘eth0’ 网络设施
ifdown eth0 禁用一个 ‘eth0’ 网络设施
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址
ifconfig eth0 promisc 设置 ‘eth0’ 成混杂模式为嗅探数据包 (sniffing)
dhclient eth0 以dhcp模式启用 ‘eth0’
route -n show routing table
route add -net 0/0 gw IP_Gateway configura default gateway
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure
static route to reach network ‘192.168.0.0/16’
route del 0/0 gw IP_gateway remove static route
echo “1” > /proc/sys/net/ipv4/ip_forward activate ip routing
hostname show hostname of system
host www.example.com lookup hostname to resolve name to ip address and
viceversa(1)
nslookup www.example.com lookup hostname to resolve name to ip address
and viceversa(2)
ip link show show link status of all interfaces
mii-tool eth0 show link status of ‘eth0’
ethtool eth0 show statistics of network card ‘eth0’
netstat -tup show all active network connections and their PID
netstat -tupl show all network services listening on the system and
their PID
tcpdump tcp port 80 show all HTTP traffic
iwlist scan show wireless networks
iwconfig eth1 show configuration of a wireless network card
hostname show hostname
host www.example.com lookup hostname to resolve name to ip address and
viceversa
nslookup www.example.com lookup hostname to resolve name to ip address
and viceversa
whois www.example.com lookup on Whois database

GO TOP INDEX ^
Microsoft Windows networks (SAMBA)
nbtscan ip_addr netbios name resolution
nmblookup -A ip_addr netbios name resolution
smbclient -L ip_addr/hostname show remote shares of a windows host
smbget -Rr smb://ip_addr/share like wget can download files from a host
windows via smb
mount -t smbfs -o username=user,password=pass //WinClient/share
/mnt/share mount a windows network share

昂立通命(mount)

率先,介绍一下挂接(mount)命令的施用方法,mount命令参数非常多,这里要谈一下今我们要因此到之。

命格式:mount [-t vfstype] [-o options] device dir
其中:

1.-t vfstype 指定文件系统的种,通常不必指定。mount
会自动选择正确的类。常因此色有:
光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Mount Windows文件网络共享:smbfs
UNIX(LINUX) 文件网络共享:nfs

2.-o options 首要用来讲述设备或者档案的挂接方式。常用的参数有:
loop:用来将一个文书正是硬盘分区挂通上系
ro:采用单独念方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集

3.device 要挂接(mount)的设备。

4.dir设备以系统上的挂接点(mount point)。

悬挂通光盘镜像文件

1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下的下令。
#cp /dev/cdrom /home/sunky/mydisk.iso 或
#dd if=/dev/cdrom of=/home/sunky/mydisk.iso
流淌:执行方的其余一样长长的命令还不过拿手上光驱里之光盘制作成光盘镜像文件/home/sunky/mydisk.iso

2、将文件与目录制作成光盘镜像文件,执行下的吩咐。
#mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
横流:这长达命令将/home/sunky/mydir目录下具有的目及文书制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk

3、光盘镜像文件的挂接(mount)
#mkdir /mnt/vcdrom
流动:建立一个索引用来发挂接点(mount point)
#mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
注:使用/mnt/vcdrom就可以访问盘镜像文件mydisk.iso里的所有文件了。

挂接移动硬盘
本着linux系统而言,USB接口的移动硬盘是作SCSI设备对待的。插入移动硬盘之前,应先用fdisk
–l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。
[root at pldyrouter /]# fdisk -l

接好移动硬盘后,再用fdisk –l 或 more
/proc/partitions查看系统的硬盘和硬盘分区情况.应该可以发现多了一个SCSI硬盘/dev/sdc和它们的点滴个磁盘分区/dev
/sdc1?、/dev/sdc2,其中/dev/sdc5凡是/dev/sdc2私分区之逻辑分区。我们可以利用下的吩咐挂接/dev/sdc1和
/dev/sdc5。
#mkdir -p /mnt/usbhd1
#mkdir -p /mnt/usbhd2
横流:建立目录用来作挂接点(mount point)
#mount -t ntfs /dev/sdc1 /mnt/usbhd1
#mount -t vfat /dev/sdc5 /mnt/usbhd2
注:对ntfs格式的磁盘分区应采用-t ntfs
参数,对fat32格式的磁盘分区应运用-t
vfat参数。若汉字文件称示也乱码或非形,可以下下的吩咐格式。
#mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1
#mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2

linux系统下利用fdisk分区命令和mkfs文件系统创建命令可以拿移动硬盘的分区制作成linux系统所特有的ext2、ext3格式。这样,在linux下以就还方便了。使用下的命直接挂接即可。
#mount /dev/sdc1 /mnt/usbhd1

挂接U盘
和USB接口的移动硬盘一样对linux系统而言U盘也是用作SCSI设备对待的。使用办法及移动硬盘完全等同。插入U盘之前,应优先用fdisk
–l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。
[root at pldyrouter root]# fdisk -l
栽U盘后,再用fdisk –l 或 more
/proc/partitions查看系统的硬盘和硬盘分区情况。
[root at pldyrouter root]# fdisk -l
系多矣一个SCSI硬盘/dev/sdd和一个磁盘分区/dev/sdd1,/dev/sdd1就是我们如果挂接的U盘。
#mkdir -p /mnt/usb
横流:建立一个索引用来作挂接点(mount point)
#mount -t vfat /dev/sdd1 /mnt/usb
注:现在可经/mnt/usb来访问U盘了,
若汉字文件称示也乱码或不显,可以使用下的命令。
#mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb

挂接Windows文件共享
Windows网络共享的主干是SMB/CIFS,在linux下一旦挂接(mount)windows的磁盘共享,就得设置以及用samba
软件包。现在风行的linux发行本绝大多数早已包含了samba软件包,如果安装linux系统时未安装samba请首先安装samba。当然也可交
www.samba.org网站下载……新的版本是3.0.10版。
当windows系统共享设置好后,就好以linux客户端挂接(mount)了,具体操作如下:
# mkdir –p /mnt/samba
流动:建立一个索引用来发挂接点(mount point)
# mount -t smbfs -o username=administrator,password=pldy123
//10.140.133.23/c$ /mnt/samba
横流:administrator 和 pldy123 是ip地址为10.140.133.23
windows计算机的一个用户称与密码,c$是及时令微机的一个磁盘共享
这么就足以以linux系统上经过/mnt/samba来做客windows系统磁盘上之文书了。以上操作以redhat
as server 3、redflag server 4.1、suse server 9以及windows NT
4.0、windows 2000、windows xp、windows 2003环境下测试通过。

挂接UNIX系统NFS文件共享
类于windows的网络共享,UNIX(Linux)系统吧发好的网络共享,那就算是NFS(网络文件系统),下面我们便为SUN
Solaris2.8以及REDHAT as server 3 为例简单介绍一下以linux下怎么mount
nfs网络共享。
在linux客户端挂接(mount)NFS磁盘共享之前,必须事先安排好NFS服务端。

1、Solaris系统NFS服务端配置方式如下:
(1)修改 /etc/dfs/dfstab, 增加共享目录
share -F nfs -o rw /export/home/sunky
(2)启动nfs服务
# /etc/init.d/nfs.server start
(3)NFS服务启动后,也可以使用下的下令增加新的共享
# share /export/home/sunky1
# share /export/home/sunky2
注:/export/home/sunky和/export/home/sunky1是准备共享的目录

2、linux系统NFS服务端配置方式如下:
(1)修改 /etc/exports,增加共享目录
/export/home/sunky 10.140.133.23(rw)
/export/home/sunky1 *(rw)
/export/home/sunky2 linux-client(rw)
注:/export/home/目录下之sunky、sunky1、sunky2是准备共享的目录,10.140.133.23、*、
linux-client是叫允许挂接此共享linux客户机的IP地址或主机名。如果假定使用主机名linux-client必须于服务端主机
/etc/hosts文件里长linux-client主机ip定义。格式如下:
10.140.133.23 linux-client

(2)启动和住NFS服务
/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)
/etc/rc.d/init.d/nfs start 启动NFS服务
/etc/rc.d/init.d/nfs stop 停止NFS服务
流动:若修改/etc/export文件增加新的共享,应先停止NFS服务,再开行NFS服务着会使新添的共享于作用。使用命令exportfs
-rv也得以直达同等的意义。

3、linux客户端挂接(mount)其他linux系统或UNIX系统的NFS共享
# mkdir –p /mnt/nfs
流动:建立一个索引用来发挂接点(mount point)
#mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs
横流:这里我们要10.140.133.9是NFS服务端的主机IP地址,当然这里为堪下主机名,但不能不以本机/etc/hosts文件里多服务端ip定义。/export/home/sunky为服务端共享的目。

这般就足以以linux客户端通过/mnt/nfs来访问其它linux系统或UNIX系统以NFS方式共享出来的文书了。以上操作以
redhat as server 3、redflag server4.1、suse server 9以及Solaris
7、Solaris 8、Solaris 9 for x86&sparc环境下测试通过

补充:

linux加载光驱

(1)使用光驱前,要事先mount一下:#mount /dev/cdrom
/mnt/cdrom,然后您便可入/mnt/cdrom目录下诵读博光盘内容了;
(2)当您想淡出光盘时,须使用umout命令,否则光驱就会见直接处在死锁状态:#umount
/mnt/cdrom。

相关文章