【机器学习实战 Task1】 (KNN)k近邻算法的应用

2023-05-16

1 背景

1.1 k近邻算法的概述

(1)k近邻算法的简介

k-近邻算法是属于一个非常有效且易于掌握的机器学习算法,简单的说就是采用测量不同特征值之间距离的方法对数据进行分类的一个算法。

(2)k近邻算法的工作原理

给定一个样本的集合,这里称为训练集,并且样本中每个数据都包含标签。对于新输入的一个不包含标签的数据,通过计算这个新的数据与每一个样本之间的距离,选取前k个,通常k小于20,以k个剧里最近的数据的标签中出现次数最多的标签作为该新加入的数据标签。

(3)k近邻算法的案例

当前统计了6部电影的接吻和打斗的镜头数,假设有一部未看过的电影,如何确定它是爱情片还是动作片呢?

电影名称打斗镜头接吻镜头电影类型
California Man3104爱情片
He‘s Not Really into Dudes2100爱情片
Beautiful Woman181爱情片
Kevin Longblade10110动作片
Robo Slayer 3000995动作片
Amped II982动作片
1890未知

根据knn算法的原理,我们可以求出,未知电影与每部电影之间的距离(这里采用欧式距离)

以California Man为例

>>>((3-18)**2+(104-90)**2)**(1/2)
20.518284528683193
电影名称与未知i电影之间的距离
California Man20.5
He‘s Not Really into Dudes18.7
Beautiful Woman19.2
Kevin Longblade115.3
Robo Slayer 3000117.4
Amped II118.9

因此我们可以找到样本中前k个距离最近的电影,假设k=3,前三部电影均为爱情片,因此我们判定未知电影属于爱情片。

1.2 用python代码实现k近邻算法

(1)计算已知类别数据集中的每个点与当前点之间的距离

(2)按照距离递增次序排序

(3)选取与当前点距离最小的k个点

(4)确定前k个点所在类别出现的频率

(5)返回前k个点出现频率最高的类别作为当前点的预测分类

import numpy as np
import operator

def classify0(inX, dataSet, labels, k):
    dataSetSize = dataSet.shape[0]
    diffMat = np.tile(inX, (dataSetSize,1)) - dataSet
    sqDiffMat = diffMat**2
    sqDistances = sqDiffMat.sum(axis=1)
    distances = sqDistances**0.5
    sortedDistIndicies = distances.argsort()     
    classCount={}          
    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
    sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
    return sortedClassCount[0][0]

(6)案例

>>>group = np.array([[1, 1.1],
...                 [1, 1],
...                 [0, 0],
...                 [0, 0.1]])
>>>labels = ['A', 'A', 'B', 'B']
>>>classify0([0,0], group, labels, 3)
'B'

1.3 如何测试分类器

正常来说为了测试分类器给出来的分类效果,我们通常采用计算分类器的错误率对分类器的效果进行评判。也就是采用分类出错的次数除以分类的总次数。完美的分类器的错误率为0,而最差的分类器的错误率则为1。

2 使用kNN算法改进约会网站的匹配效果

2.1 案例介绍

朋友海伦在使用约会软件寻找约会对象的时候,尽管网站会推荐不同的人选,但并不是每一个人她都喜欢,具体可以分为以下三类:不喜欢的人,魅力一般的人,极具魅力的人。尽管发现了以上的规律,但是海伦依旧无法将网站推荐的人归到恰当的类别,因此海伦希望我们的分类软件能更好的帮助她将匹配到的对象分配到确切的分类中。

2.2 数据的准备

以下提供两种下载数据集的渠道:

《机器学习实战官方下载python2版本代码》

《202xxx的github下载python3版本代码》

数据存放在datingTestSet2.txt中,每个样本占一行,共1000行数据,主要包括了以下三个特征:

每年获得的飞行常客里程数,玩视频游戏所耗时间百分比,每周消费冰淇淋公升数

在数据输入到分类器之前,需要把数据转换成分类器可以识别的样式

def file2matrix(filename):
    fr = open(filename)
    numberOfLines = len(fr.readlines())         #get the number of lines in the file
    returnMat = np.zeros((numberOfLines,3))        #prepare matrix to return
    classLabelVector = []                       #prepare labels return   
    fr = open(filename)
    index = 0
    for line in fr.readlines():
        line = line.strip()
        listFromLine = line.split('\t')
        returnMat[index,:] = listFromLine[0:3]
        classLabelVector.append(int(listFromLine[-1]))
        index += 1
    return returnMat,classLabelVector

使用file2matix读取到的特征数据(datingDataMat)如下

array([[4.0920000e+04, 8.3269760e+00, 9.5395200e-01],
        [1.4488000e+04, 7.1534690e+00, 1.6739040e+00],
        [2.6052000e+04, 1.4418710e+00, 8.0512400e-01],
        ...,
        [2.6575000e+04, 1.0650102e+01, 8.6662700e-01],
        [4.8111000e+04, 9.1345280e+00, 7.2804500e-01],
        [4.3757000e+04, 7.8826010e+00, 1.3324460e+00]]

标签数据(datingLabels)如下

[3,2,1,1,1,1,3,3,...,3,3,3]

2.3 数据分析:使用Matplotlib创建散点图

(1)玩视频游戏所耗时间百分比与每周消费冰淇淋公升数之间的相关关系图

import matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(datingDataMat[:,0], datingDataMat[:,1], 15.0*np.array(datingDLabels), 15.0*np.array(datingDLabels))
plt.show()

其中,y轴为每周消费冰淇淋公升数,x轴为玩视频游戏所耗时间百分比

紫色为不喜欢,绿色为魅力一般,黄色为极具魅力

(2)飞行常客里程数与玩视频游戏所耗时间百分比之间的相关关系图

import matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(datingDataMat[:,0], datingDataMat[:,1], 15.0*np.array(datingDLabels), 15.0*np.array(datingDLabels))
plt.show()

其中,y轴为玩视频游戏所耗时间百分比,x轴为飞行常客里程数

紫色为不喜欢,绿色为魅力一般,黄色为极具魅力

(3)飞行常客里程数与每周消费冰淇淋公升数之间的相关关系图

import matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(datingDataMat[:,0], datingDataMat[:,2], 15.0*np.array(datingDLabels), 15.0*np.array(datingDLabels))
plt.show()

其中,y轴为每周消费冰淇淋公升数,x轴为飞行常客里程数

紫色为不喜欢,绿色为魅力一般,黄色为极具魅力

 2.4 数据准备:归一化数值

 由于通过欧式距离计算样本之间的距离时,对于飞行常客里程数来说,数量值巨大,会对结果影响的权重也会较大,而且远远大于其他两个特征,但是作为三个等权重之一,飞行常客里程数并不应该如此严重影响结果,例子如下

((0-67)**2+(20000-32000)**2+(1.1-0.1)**2)**1/2
玩视频游戏所耗时间百分比飞行常客里程数每周消费冰淇淋公升数样本分类
10.84000.51
2121340000.93
30200001.12
467320000.12

通常我们在处理不同取值范围的特征时,常常采用归一化进行处理,将特征值映射到0-1或者-1到1之间,通过对(列中所有值-列中最小值)/(列中最大值-列中最小值)进行归一化特征

def autoNorm(dataSet):
    minVals = dataSet.min(0)
    maxVals = dataSet.max(0)
    ranges = maxVals - minVals
    normDataSet = np.zeros(np.shape(dataSet))
    m = dataSet.shape[0]
    normDataSet = dataSet - np.tile(minVals, (m,1))
    normDataSet = normDataSet/np.tile(ranges, (m,1))   #element wise divide
    return normDataSet, ranges, minVals

 2.5 测试算法:作为完整程序验证分类器

评估正确率是机器学习算法中非常重要的一个步骤,通常我们会只使用训练样本的90%用来训练分类器,剩下的10%用于测试分类器的正确率。为了不影响数据的随机性,我们需要随机选择10%数据。

(1)使用file2matrix函数导入数据样本

(2)使用autoNorm对数据进行归一化处理

(3)使用classify0对90%的数据进行训练,对10%的数据进行测试

(4)输出测试集中的错误率

def datingClassTest():
    hoRatio = 0.50      #hold out 10%
    datingDataMat,datingLabels = file2matrix('datingTestSet2.txt')       #load data setfrom file
    normMat, ranges, minVals = autoNorm(datingDataMat)
    m = normMat.shape[0]
    numTestVecs = int(m*hoRatio)
    errorCount = 0.0
    for i in range(numTestVecs):
        classifierResult = classify0(normMat[i,:],normMat[numTestVecs:m,:],datingLabels[numTestVecs:m],3)
        print ("the classifier came back with: %d, the real answer is: %d" % (classifierResult, datingLabels[i]))
        if (classifierResult != datingLabels[i]): errorCount += 1.0
    print ("the total error rate is: %f" % (errorCount/float(numTestVecs)))
    print (errorCount)

最后得到分类器处理的约会数据集的错误率为2.4%,这是一个相当不错的结果,同样我们可以改变hoRatio的值,和k的值,检测错误率是否随着变量的变化而增加

 2.5 使用算法:构建完整可用的系统

通过上面的学习,我们尝试给海伦开发一套程序,通过在约会网站找到某个人的信息,输入到程序中,程序会给出海伦对对方的喜欢程度的预测值:不喜欢,魅力一般,极具魅力

import numpy as np
import operator

def file2matrix(filename):
    fr = open(filename)
    numberOfLines = len(fr.readlines())         #get the number of lines in the file
    returnMat = np.zeros((numberOfLines,3))        #prepare matrix to return
    classLabelVector = []                       #prepare labels return   
    fr = open(filename)
    index = 0
    for line in fr.readlines():
        line = line.strip()
        listFromLine = line.split('\t')
        returnMat[index,:] = listFromLine[0:3]
        classLabelVector.append(int(listFromLine[-1]))
        index += 1
    return returnMat,classLabelVector

def autoNorm(dataSet):
    minVals = dataSet.min(0)
    maxVals = dataSet.max(0)
    ranges = maxVals - minVals
    normDataSet = np.zeros(np.shape(dataSet))
    m = dataSet.shape[0]
    normDataSet = dataSet - np.tile(minVals, (m,1))
    normDataSet = normDataSet/np.tile(ranges, (m,1))   #element wise divide
    return normDataSet, ranges, minVals

def classify0(inX, dataSet, labels, k):
    dataSetSize = dataSet.shape[0]
    diffMat = np.tile(inX, (dataSetSize,1)) - dataSet
    sqDiffMat = diffMat**2
    sqDistances = sqDiffMat.sum(axis=1)
    distances = sqDistances**0.5
    sortedDistIndicies = distances.argsort()     
    classCount={}          
    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
    sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
    return sortedClassCount[0][0]

def classifyPerson():
    resultList = ["not at all", "in small doses", "in large doses"]
    percentTats = float(input("percentage of time spent playing video games?"))
    ffMiles = float(input("ferquent fiter miles earned per year?"))
    iceCream = float(input("liters of ice ice crean consumed per year?"))
    datingDataMat,datingLabels = file2matrix('knn/datingTestSet2.txt')       #load data setfrom file
    normMat, ranges, minVals = autoNorm(datingDataMat)
    inArr = np.array([percentTats, ffMiles, iceCream])


    classifierResult = classify0((inArr-minVals)/ranges, normMat, datingLabels,3)
    print ("You will probably like this person:", resultList[classifierResult-1])

if __name__ == "__main__":
    classifyPerson()#10    10000    0.5

输入测试数据:

percentage of time spent playing video games?10
ferquent fiter miles earned per year?10000
liters of ice ice crean consumed per year?0.5
You will probably like this person: not at all

3 使用kNN算法制作手写识别系统

3.1 案例介绍

以下案例以数字0-9的分类为例,简述如何采用k近邻算法对手写数字进行识别。

 通常手写输入的数字都是图片格式,我们需要将图片转换成knn算法可以识别的结构化数据,简单来说就是读取图片中的像素点,像素点值通常在0-255之间,0为黑色,255为白色,因此可以将值大于250的像素点标记为1,其余标记为0,手写数字1可以用以下数据集表示:

1111111111
1111000111
1111000111
1111001111
1111001111
1111001111
1111001111
1111001111
1110000111
1111111111

3.2 数据准备:将图像转换为测试向量

 以下提供两种下载数据集的渠道:

《机器学习实战官方下载python2版本代码》

《202xxx的github下载python3版本代码》

数据集存放在digits.zip中,其中用1代表手写的区域,用0代表空白区域

 通过img2vector函数对数据进行读取,并且返回数组

def img2vector(filename):
    returnVect = np.zeros((1,1024))
    fr = open(filename)
    for i in range(32):
        lineStr = fr.readline()
        for j in range(32):
            returnVect[0,32*i+j] = int(lineStr[j])
    return returnVect

3.3 测试算法,使用kNN识别手写数字

(1)使用listdir读取trainingDigits目录下所有文件作为训练数据

(2)使用listdir读取testDigits目录下所有文件作为测试数据

(3)将训练数据与测试数据喂入knn算法中

def handwritingClassTest():
    hwLabels = []
    trainingFileList = listdir('trainingDigits')           #load the training set
    m = len(trainingFileList)
    trainingMat = np.zeros((m,1024))
    for i in range(m):
        fileNameStr = trainingFileList[i]
        fileStr = fileNameStr.split('.')[0]     #take off .txt
        classNumStr = int(fileStr.split('_')[0])
        hwLabels.append(classNumStr)
        trainingMat[i,:] = img2vector('trainingDigits/%s' % fileNameStr)
    testFileList = listdir('testDigits')        #iterate through the test set
    errorCount = 0.0
    mTest = len(testFileList)
    for i in range(mTest):
        fileNameStr = testFileList[i]
        fileStr = fileNameStr.split('.')[0]     #take off .txt
        classNumStr = int(fileStr.split('_')[0])
        vectorUnderTest = img2vector('testDigits/%s' % fileNameStr)
        classifierResult = classify0(vectorUnderTest, trainingMat, hwLabels, 3)
        print ("the classifier came back with: %d, the real answer is: %d"% (classifierResult, classNumStr))
        if (classifierResult != classNumStr): errorCount += 1.0
    print ("\nthe total number of errors is: %d" % errorCount)
    print ("\nthe total error rate is: %f" % (errorCount/float(mTest)))

输出训练结果,错误率为1.1628%,通过改变k值与训练样本都会使得错误率发生变化。

the classifier came back with: 7, the real answer is: 7
the classifier came back with: 7, the real answer is: 7
the classifier came back with: 9, the real answer is: 9
the classifier came back with: 0, the real answer is: 0
the classifier came back with: 0, the real answer is: 0
the classifier came back with: 4, the real answer is: 4
the classifier came back with: 9, the real answer is: 9
the classifier came back with: 7, the real answer is: 7
the classifier came back with: 7, the real answer is: 7
the classifier came back with: 1, the real answer is: 1
the classifier came back with: 5, the real answer is: 5
the classifier came back with: 4, the real answer is: 4
the classifier came back with: 3, the real answer is: 3
the classifier came back with: 3, the real answer is: 3

the total number of errors is: 11

the total error rate is: 0.011628

4 总结

4.1 k-近邻算法的优缺点

(1)优点:精度高,对异常值不敏感,无数据输入假定

(2)缺点:计算复杂度高,空间复杂度高

适用数据范围:数值型和标称型

4.2 k-近邻算法的一般流程

(1)收集数据:可以使用任何方法

(2)准备数据:距离计算所需的数值,最好是结构化的数据格式

(3)分析数据L:可以使用任何方法

(4)训练算法:此步骤不适合与k近邻算法

(5)测试算法:计算错误率

(6)使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。

4.3 k-近邻算法使用需要注意的问题

(1)数据特征之间量纲不统一时,需要对数据进行归一化处理,否则会出现大数吃小数的问题

(2)数据之间的距离计算通常采用欧式距离

(3)kNN算法中K值的选取会对结果产生较大的影响,一般k值要小于训练样本数据的平方根

(4)通常采用交叉验证法来选择最优的K值

Reference

《机器学习实战》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【机器学习实战 Task1】 (KNN)k近邻算法的应用 的相关文章

  • KNN cosine 余弦相似度计算

    coding utf 8 import collections import numpy as np import os from sklearn neighbors import NearestNeighbors def cos vect
  • 机器学习实战:AdaBoost预测病马率

    import numpy as np 函数说明 加载数据集 Parameters filename 文件名 Returns dataMat 数据集 labelMat 标签 def loadDataSet filename numFeat l
  • 机器学习实战笔记(Python实现)-02-k近邻算法(kNN)

    k近邻算法 kNN 本博客来源于CSDN http blog csdn net niuwei22007 article details 49703719 本博客源代码下载地址 CSDN免费下载 GitHub下载地址 均带有详细注释和测试数据
  • K最近邻算法(KNN)---sklearn+python实现

    k 近邻算法概述 简单地说 k近邻算法采用测量不同特征值之间的距离方法进行分类 k 近邻算法 优点 精度高 对异常值不敏感 无数据输入假定 缺点 计算复杂度高 空间复杂度高 适用数据范围 数值型和标称型 k 近邻算法 kNN 它的工作原理是
  • 【机器学习实战】11、利用SVD简化数据

    文章目录 14 1 1 隐形语义索引 14 1 2 推荐系统 14 2 矩阵分解 SVD矩阵分解 14 3 利用python实现SVD 14 4 1 相似度计算 14 4 2 基于物品的相似度还是基于用户的相似度 14 4 3 推荐引擎的评
  • 【Python机器学习】KNN进行水果分类和分类器实战(附源码和数据集)

    需要源码和数据集请点赞关注收藏后评论区留言私信 KNN算法简介 KNN K Nearest Neighbor 算法是机器学习算法中最基础 最简单的算法之一 它既能用于分类 也能用于回归 KNN通过测量不同特征值之间的距离来进行分类 KNN算
  • Python机器学习从零开始(一)序章

    目录 前言 写在前面 1 什么是机器学习 1 1 监督学习 1 2无监督学习 2 Python中的机器学习 3 必须环境安装 Anacodna安装 总结 前言 每一次变革都由技术驱动 纵观人类历史 上古时代 人类从采集狩猎社会 进化为农业社
  • 代码注释:机器学习实战第8章 预测数值型数据:回归

    写在开头的话 在学习 机器学习实战 的过程中发现书中很多代码并没有注释 这对新入门的同学是一个挑战 特此贴出我对代码做出的注释 仅供参考 欢迎指正 coding gbk from numpy import 作用 从文件中导入数据 输入 文件
  • k近邻算法中k的值

    我有 7 个类需要分类 我有 10 个特征 在这种情况下 我需要使用 k 的最佳值吗 或者我是否必须针对 1 到 10 大约 10 之间的 k 值运行 KNN 并在算法本身的帮助下确定最佳值 此外文章我在评论里发帖有this one这也表明
  • 泡菜懒惰学习者

    Pickle 是否为像 KNeighborsClassifier 这样的懒惰学习者保存来自 scikit 的训练数据 如果是这样 我们可以从 pickle 对象访问这些数据吗 询问数据隐私问题 Eg knn fit Xtrain Ytrai
  • R 中的 Knn 回归

    我正在研究 Knn 回归方法和后来的核平滑 我希望使用 R 中的绘图来演示这些方法 我使用以下代码生成了一个数据集 x runif 100 0 pi e rnorm 100 0 0 1 y sin x e 我一直在尝试遵循 9 2 中如何使
  • scikit-learn 的 KNN 如何计算概率估计?

    scikit learn中KNN算法的实现是如何计算概率估计的predict proba X method 以下示例摘自 sklearn 文档 但进行了一些修改 以便您可以理解我们在这种情况下做什么 有关更多详细信息 请参见 https s
  • 如何在 python 中使用 kNN 动态时间扭曲

    我有一个带有两个标签的时间序列数据集 0 and 1 我在用动态时间扭曲 DTW 作为使用 k 最近邻 kNN 进行分类的相似性度量 如这两篇精彩的博客文章中所述 https nbviewer jupyter org github mark
  • 使用 TF-IDF 分数进行文本分类的 KNN

    我有一个 CSV 文件 corpus csv 其中包含语料库中以下格式的分级摘要 文本 Institute Score Abstract UoM 3 0 Hello this is abstract one UoM 3 2 Hello th
  • 使用 KNN 分类器进行数字识别之前的预处理

    现在我正在尝试使用 OpenCV 创建数字识别系统 WEB上有很多文章和例子 甚至在堆栈溢出 https stackoverflow com questions 9413216 simple digit recognition ocr in
  • np 数组之间的欧氏距离

    我有两个 numpy 数组 a 和 b a 和 b 的尺寸相同 a 的尺寸可以与 b 的尺寸不同 例如 a 1 2 5 7 b 3 8 4 7 9 15 有没有一种简单的方法来计算 a 和 b 之间的欧几里得距离 以便这个新数组可以在 k
  • 从距离矩阵开始查找 K 个最近邻

    我正在寻找一个接受良好优化的函数n X n距离矩阵并返回n X k矩阵的索引k第 i 行中第 i 个数据点的最近邻居 我发现了无数的不同R可以让您执行 KNN 的软件包 但它们似乎都在同一函数中包含距离计算和排序算法 特别是 对于大多数例程
  • 属性错误:“图形”对象没有属性“节点”

    我有以下 python 代码来构建 knn 图 但出现错误 AttributeError Graph 对象没有属性 node 似乎 nx Graph 没有节点属性 但我不知道应该用它替换什么 import networkx as nx de
  • 在SURF中使用欧几里德距离

    在我的代码中 我根据最近邻距离比过滤好图像 如下所示 for int i 0 i lt min des image rows 1 int matches size i if matches i 0 distance lt 0 6 match
  • Spark 中的广播 Annoy 对象(对于最近邻居)?

    由于 Spark 的 mllib 没有最近邻居功能 我正在尝试使用Annoy https github com spotify annoy为近似最近邻 我尝试广播 Annoy 对象并将其传递给工人 然而 它并没有按预期运行 下面是可重复性的

随机推荐

  • 树莓派光敏传感器控制LED小灯的开关

    今天来做一个关于光敏传感器的使用demo xff0c 如图 xff0c 我采用的是普通用于开发的光敏传感器 传感器的基板上有两个LED xff0c 上一个是表示DO的高低电平 xff0c 下一个表示是否通电 当挡住传感头之后 xff0c D
  • Opencv+YOLO3目标检测/C++

    1 引言 YOLO3能够快速识别图片和视频中的80种物体 xff0c 而且实时性强 xff0c 准确度接近SSD Opencv是目前最流行的开源图像处理库 xff0c 使用Opencv能够非常方便的对图像进行处理 Opencv4 0已经包含
  • Linux安装Docker

    安装前菜 如何卸载Docker 1 查询docker安装包 yum list installed grep docker 2 删除安装包 yum remove docker 3 删除镜像 容器等 rm rf var lib docker 下
  • 北邮初试+复试经验分享

    初试情况 xff1a 政治 53 英语 70 数学 122 计算机综合 xff08 803 xff09 110 一些相关的基本情况 xff1a 本科专业数学 本科期间学过数据结构 通过了英语四六级 本科成绩还算可以 初试材料选择 xff08
  • apt命令概述

    目录 Linux软件仓库 软件源配置 apt命令 常见的命令如下 xff1a 常见的用法 示例 xff1a 使用apt安装redis软件 Linux软件仓库 Ubuntu采用集中式的软件仓库机制 xff0c 将各式各样 的软件包分门别类地存
  • 索引覆盖与回表

    懂的越多 xff0c 不懂的越多 上回书说到 xff1a 什么情况下 xff0c 索引下推没办法提高sql查询效率 xff1f 表info主键id名称name值value别名realname 对于info表 xff0c 我们现在有 xff0
  • Ubuntu18.04安装实时内核Preempt-RT

    文章目录 1 安装环境2 安装依赖包3 查看内核版本4 下载新的内核和对应的Preempt RT补丁5 解压缩6 打补丁7 配置内核8 编译内核9 校验结果10 重启11 测试12 调整分辨率 1 安装环境 Ubuntu18 04内核版本
  • CAS 5.2.X 使用cas-overlay-template 搭建cas-server

    1 下载 cas overlay template 地址 xff1a https github com apereo cas overlay template 选择需要的版本 xff1a cas 6 x开始使用gradle构建 xff0c
  • Jupyter 更改主题解决 jt 不存在问题

    pip安装之后 xff0c 并不是像传统的那样安装到了envs中的script文件中 而是在C盘的appdata C Users Administrator AppData Roaming Python Python36 Scripts 中
  • 树莓派4 桌面图标显示 No wireless interface found

    树莓派4 桌面图标显示 No wireless interface found 解决方式 先使用有线链接网络 安装wpasupplicant wpagui libengine pkcs11 openssl sudo apt install
  • mysql _外键、实体关系与ER图

    外键约束 概念 A实体的某个字段指向 B实体的主键 则称A实体的那个字段为该实体的外键 一个表里可以有多个外键 span class hljs operator span class hljs keyword drop span span
  • hadoop系列之Configuration类解析

    前言 Configuration是hadoop中五大组件的公用类 xff0c 所以放在了core下 xff0c org apache hadoop conf Configruration 这个类是作业的配置信息类 xff0c 任何作用的配置
  • tty_read和tty_write

    一 tty read 对于tty read这个函数 xff0c 很多标志我也没有弄得太清楚 xff0c 但是问题不大 xff0c 以后有机会在看 我觉得重点是看数据怎么从cdc驱动到通过线路规划到tty xff0c 再从tty到用户空间 标
  • 深度学习 - 模型调优经历(1)

    模型调优经历 xff08 1 xff09 背景遇到问题思路解决办法 背景 样本规模及划分 bullet 二分类问题 xff0c 正负样本 1 1 xff0c 特征数 xff1a 20
  • Android SDK下载安装及配置教程

    让大家很方便的不用翻墙不用代理地就完成Android开发环境的搭建 总结起来 xff0c Android开发环境搭建可以分为以下四步 xff1a 第一步 安装JDK xff1b 略 第二步 安装Eclipse xff1b 略 第三步 下载并
  • (DFS)深度优先搜索算法详解

    背景 DFS 英文全称为 xff08 Depth First Search xff09 xff0c 中文简称深度优先搜索算法 xff0c 其过程为沿着每一个可能的路径向下进行搜索 xff0c 直到不能再深入为止 xff0c 并且每一个节点只
  • ovs-ofctl

    文章目录 64 toc ovs ofctl语法COMMANDSOpenFlow Switch Management Commands OpenFlow Switch Flow Table CommandsGroup Table Comman
  • 【牛客网华为机试】HJ46 截取字符串

    题目 描述 输入一个字符串和一个整数k xff0c 截取字符串的前k个字符并输出 本题输入含有多组数据 输入描述 xff1a 1 输入待截取的字符串 2 输入一个正整数k xff0c 代表截取的长度 输出描述 xff1a 截取后的字符串 示
  • 【牛客网华为机试】HJ50 四则运算

    题目 描述 输入一个表达式 xff08 用字符串表示 xff09 xff0c 求这个表达式的值 保证字符串中的有效字符包括 0 9 43 xff0c 且表达式一定合法 输入描述 xff1a 输入一个算术表达式 输出描述 xff1a 得到计算
  • 【机器学习实战 Task1】 (KNN)k近邻算法的应用

    1 背景 1 1 k近邻算法的概述 xff08 1 xff09 k近邻算法的简介 k 近邻算法是属于一个非常有效且易于掌握的机器学习算法 xff0c 简单的说就是采用测量不同特征值之间距离的方法对数据进行分类的一个算法 xff08 2 xf