【数据科学】Scikit-learn[Scikit-learn、加载数据、训练集与测试集数据、创建模型、模型拟合、拟合数据与模型、评估模型性能、模型调整]

这里写目录标题

  • 一、Scikit-learn
  • 二、加载数据
  • 三、训练集与测试集数据
  • 四、创建模型
    • 4.1 有监督学习评估器
      • 4.1.1 线性回归
      • 4.1.2 支持向量机(SVM)
      • 4.1.3 朴素贝叶斯
      • 4.1.4 KNN
    • 4.2 无监督学习评估器
      • 4.2.1 主成分分析(PCA)
      • 4.2.2 K Means
  • 五、模型拟合
    • 5.1 有监督学习
    • 5.2 无监督学习
  • 六、拟合数据与模型
    • 6.1 标准化
    • 6.2 归一化
    • 6.3 二值化
    • 6.4 编码分类特征
    • 6.5 输入缺失值
    • 6.6 生成多项式特征
  • 七、评估模型性能
    • 7.1 评估模型性能
      • 7.1.1 准确率
      • 7.1.2 分类预估评价函数
      • 7.1.3 混淆矩阵
    • 7.2 回归指标
      • 7.2.1 平均绝对误差
      • 7.2.2 均方误差
      • 7.2.3 R²评分
    • 7.3 群集指标
      • 7.3.1 调整兰德系数
      • 7.3.2 同质性
      • 7.3.3 V-measure
    • 7.4 交叉验证
  • 八、模型调整
    • 8.1 栅格搜索
    • 8.2 随机参数优化


一、Scikit-learn

Scikit-learn开源的Python库,通过统一的界面实现机器学习预处理交叉验证及可视化算法

在这里插入图片描述

>>> from sklearn import neighbors, datasets, preprocessing
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.metrics import accuracy_score
>>> iris = datasets.load_iris()
>>> X, y = iris.data[:, :2], iris.target
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33)
>>> scaler = preprocessing.StandardScaler().fit(X_train)
>>> X_train = scaler.transform(X_train)
>>> X_test = scaler.transform(X_test)
>>> knn = neighbors.KNeighborsClassifier(n_neighbors=5)
>>> knn.fit(X_train, y_train)
>>> y_pred = knn.predict(X_test)
>>> accuracy_score(y_test, y_pred)

  以上是使用 scikit-learn 库 进行 k-最近邻(KNN)分类的流程,得到 KNN 分类器在 iris 数据集上的预测准确率。


二、加载数据

  Scikit-learn 处理的数据是存储为 NumPy 数组或 SciPy 稀疏矩阵的数字,还支持 Pandas 数据框等可转换为数字数组的其它数据类型

>>> import numpy as np
# 导入了 NumPy 库,用于进行数值计算和数组操作
>>> X = np.random.random((10,5))
>>> y = np.array(['M','M','F','F','M','F','M','M','F','F','F'])
>>> X[X < 0.7] = 0

  以上我们使用了 NumPy 库来生成一个随机的 10 行 5 列的矩阵 X,并将小于 0.7 的元素置为 0。同时,创建了一个包含性别标签的 NumPy 数组 y。我们得到一个形状为 (10, 5) 的随机矩阵 X,其中小于 0.7 的元素被置为 0,并创建了一个包含性别标签的数组 y。这些数据可以用于接下来的 分析建模 或其他任务中。


三、训练集与测试集数据

  使用了 scikit-learn 库train_test_split 函数,将数据集划分为 训练集测试集

>>> from sklearn.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

  得到划分后的训练集和测试集的特征数据 X_train、X_test,以及对应的类别标签数据 y_train、y_test。可以在训练集上进行模型训练,然后使用测试集评估模型的性能和准确率


四、创建模型

4.1 有监督学习评估器

4.1.1 线性回归

  我们使用 scikit-learn 库LinearRegression 类创建一个线性回归模型对象

>>> from sklearn.linear_model import LinearRegression
>>> lr = LinearRegression(normalize=True)

  创建一个线性回归模型对象 lr


4.1.2 支持向量机(SVM)

  我们使用 scikit-learn 库SVC 类,创建一个 支持向量机(SVM)模型对象

>>> from sklearn.svm import SVC
>>> svc = SVC(kernel='linear')

  创建一个支持向量机模型对象 svc,并 使用线性核函数进行分类


4.1.3 朴素贝叶斯

  使用 scikit-learn 库GaussianNB 类,创建一个 朴素贝叶斯模型对象

>>> from sklearn.naive_bayes import GaussianNB
>>> gnb = GaussianNB()

  创建一个朴素贝叶斯模型对象 gnb。朴素贝叶斯模型是一种常用的概率模型,适用于 分类问题


4.1.4 KNN

  使用 scikit-learn 库neighbors 模块,创建一个 K 最近邻(KNN)分类器对象

>>> from sklearn import neighbors
>>> knn = neighbors.KNeighborsClassifier(n_neighbors=5)

  创建一个 KNN 分类器对象 knn,它会 根据最近的邻居来进行分类KNN 是一种 基于实例的学习方法,根据最近邻居的标签进行分类


4.2 无监督学习评估器

4.2.1 主成分分析(PCA)

  使用 scikit-learn 库PCA 类,创建一个 主成分分析(PCA)对象

>>> from sklearn.decomposition import PCA
>>> pca = PCA(n_components=0.95)

  创建一个 PCA 对象 pca,它可以用于降维或特征提取。PCA 是一种常用的降维技术,可 将高维数据映射到低维空间,保留数据的主要特征


4.2.2 K Means

  使用 scikit-learn 库KMeans 类创建一个 K-Means 聚类器对象

>>> from sklearn.cluster import KMeans
>>> k_means = KMeans(n_clusters=3, random_state=0)

  创建一个 K-Means 聚类器对象 k_means,它将根据数据点之间的距离进行聚类。K-Means 是一种常用的聚类算法将数据点分割成预定义数量的簇,使得簇内的数据点尽可能相似,而不同簇之间的数据点差异较大


五、模型拟合

5.1 有监督学习

  展示了 三种不同的机器学习算法在训练集上进行训练的过程

# 拟合数据与模型
>>> lr.fit(X, y)
# 使用逻辑回归算法(Logistic Regression)对数据集(X, y)进行拟合。其中,X是输入特征矩阵,y是对应的目标变量向量
>>> knn.fit(X_train, y_train)
# 使用K近邻算法(K-Nearest Neighbors)对训练集(X_train, y_train)进行拟合。其中,X_train是训练集的输入特征矩阵,y_train是对应的目标变量向量
>>> svc.fit(X_train, y_train)
# 使用支持向量机算法(Support Vector Machine)对训练集(X_train, y_train)进行拟合。其中,X_train是训练集的输入特征矩阵,y_train是对应的目标变量向量

5.2 无监督学习

  对训练集进行聚类特征降维的过程如下。

>>> k_means.fit(X_train) # 拟合数据与模型
>>> pca_model = pca.fit_transform(X_train) # 拟合并转换数据

  模型会根据给定的训练集数据对 K-Means 聚类算法和 PCA 算法进行拟合。对于 K-Means 聚类算法,模型会 学习找到最佳的簇中心点;对于 PCA 算法,模型会 学习找到最佳的主成分投影空间。这些拟合操作会生成相应的模型或转换对象,以便于之后对新的数据进行聚类降维操作


六、拟合数据与模型

6.1 标准化

  以下是对训练集和测试集进行数据标准化的过程。

>>> from sklearn.preprocessing import StandardScaler
>>> scaler = StandardScaler().fit(X_train)
>>> standardized_X = scaler.transform(X_train)
>>> standardized_X_test = scaler.transform(X_test)

  创建一个 StandardScaler 对象 scaler,并 使用训练集的数据对其进行拟合。然后,我们可以使用 scaler 对训练集和测试集进行标准化转换,以确保数据具有相同的尺度和范围,以 提高模型的训练和预测效果


6.2 归一化

  接下来我们学习对训练集和测试集进行数据归一化

>>> from sklearn.preprocessing import Normalizer
>>> scaler = Normalizer().fit(X_train)
>>> normalized_X = scaler.transform(X_train)
>>> normalized_X_test = scaler.transform(X_test)

  创建一个 Normalizer 对象 scaler,并使用训练集的数据对其进行拟合。然后,我们可以 使用 scaler 对训练集和测试集进行归一化转换,以确保数据在特征向量方向上具有单位范数归一化可以使得不同样本之间的特征向量更具可比性,并且有助于某些机器学习算法的训练和预测效果。


6.3 二值化

  这里展示了对数据集进行二值化处理的过程。

>>> from sklearn.preprocessing import Binarizer
>>> binarizer = Binarizer(threshold=0.0).fit(X)
>>> binary_X = binarizer.transform(X)

  创建一个 Binarizer 对象 binarizer,并使用阈值 threshold=0.0 对数据集 X 进行二值化处理。然后,我们可以 使用 binarizer 对数据集进行二进制转换,并将结果保存在变量 binary_X 中二值化可以使得不同样本之间的特征更具可比性,并且有助于某些机器学习算法的训练和预测效果。


6.4 编码分类特征

  使用 LabelEncoder 对目标变量进行标签编码的过程。

>>> from sklearn.preprocessing import LabelEncoder
>>> enc = LabelEncoder()
>>> y = enc.fit_transform(y)

  创建一个 LabelEncoder 对象 enc,并使用其 fit_transform 方法对目标变量 y 进行标签编码处理。编码后的结果会覆盖原目标变量 y 的值,使得原本的标签被替换为相应的整数编码标签编码常用于将非数字类型的目标变量转换为模型可接受的数字形式,以便进行机器学习任务的训练和预测。


6.5 输入缺失值

  使用 Imputer 对象对数据集中的缺失值进行填充

>>> from sklearn.preprocessing import Imputer
>>> imp = Imputer(missing_values=0, strategy='mean', axis=0)
>>> imp.fit_transform(X_train)

  创建一个 Imputer 对象 imp,并使用其 fit_transform 方法对训练集 X_train 中的缺失值进行填充处理。填充后的结果会覆盖原始的训练集数据 X_train,使得缺失值被替换为相应列的均值Imputer 类常用于在数据预处理阶段处理缺失值,以保证数据集的完整性和准确性


6.6 生成多项式特征

  使用 PolynomialFeatures 对特征进行多项式扩展

>>> from sklearn.preprocessing import PolynomialFeatures
>>> poly = PolynomialFeatures(5)
>>> poly.fit_transform(X)

  创建一个 PolynomialFeatures 对象 poly,并使用其 fit_transform 方法对数据集 X 进行多项式扩展处理。扩展后的结果会包含原始特征的各种次方组合从一次项到最高次数为 5 的项多项式扩展常用于增加模型的复杂度,以捕捉特征之间的非线性关系,从而提升模型的预测能力


七、评估模型性能

7.1 评估模型性能

7.1.1 准确率

  使用 scikit-learn 中的评估器评分法和指标评分函数来评估模型的准确性

>>> knn.score(X_test, y_test)
# 评估器评分法
>>> from sklearn.metrics import accuracy_score
# 指标评分函数
>>> accuracy_score(y_test, y_pred)

  可以使用评估器评分法或指标评分函数来评估模型在测试集上的准确性评估器评分法直接调用模型对象的 score 方法,而指标评分函数则需要传入真实目标变量数据和预测结果数据来计算准确性得分。这些评估方法可以帮助我们 了解模型的性能,并 比较不同模型之间的表现


7.1.2 分类预估评价函数

  使用 scikit-learn 中的 classification_report 函数 来生成分类模型的精确度、召回率、F1指数和支持率等评估指标报告。

>>> from sklearn.metrics import classification_report
# 精确度、召回率、F1分数及支持率
>>> print(classification_report(y_test, y_pred))

  可以使用 classification_report 函数生成分类模型的评估指标报告。该报告会包含每个类别的精确度召回率F1指数支持率等指标,以及加权平均值总平均值。这些指标可以帮助我们评估模型在不同类别上的表现,并提供关于模型性能的详细信息。


7.1.3 混淆矩阵

  使用 scikit-learn 中的 confusion_matrix 函数生成分类模型的混淆矩阵

>>> from sklearn.metrics import confusion_matrix
>>> print(confusion_matrix(y_test, y_pred))

  使用 confusion_matrix 函数生成分类模型的混淆矩阵。混淆矩阵以矩阵的形式展示了模型在各个类别上的分类结果,包括 真正例假正例假负例真负例的数量。这样,我们就可以根据混淆矩阵来评估模型在不同类别上的分类性能,并进一步分析误分类的情况


7.2 回归指标

7.2.1 平均绝对误差

  使用 scikit-learn 中的 mean_absolute_error 函数来计算回归模型的平均绝对误差(Mean Absolute Error)。

>>> from sklearn.metrics import mean_absolute_error 
>>> y_true = [3, -0.5, 2]
>>> mean_absolute_error(y_true, y_pred)

  使用 mean_absolute_error 函数计算回归模型的平均绝对误差。该指标 衡量模型的预测结果与真实值之间的平均偏差程度数值越小表示模型的预测越准确。使用平均绝对误差可以帮助您评估回归模型的性能,并比较不同模型之间的表现。


7.2.2 均方误差

  使用 scikit-learn 中的 mean_squared_error 函数来计算回归模型的均方误差Mean Squared Error)。

>>> from sklearn.metrics import mean_squared_error
>>> mean_squared_error(y_test, y_pred)

  使用 mean_squared_error 函数计算回归模型的均方误差。该指标衡量了模型的预测结果与真实值之间的平均差异程度数值越小表示模型的预测越准确。使用均方误差可以帮助我们评估回归模型的性能,并比较不同模型之间的表现。


7.2.3 R²评分

  使用 scikit-learn 中的 r2_score 函数来计算 回归模型的 R² 分数(R-squared score)。

>>> from sklearn.metrics import r2_score
>>> r2_score(y_true, y_pred)

  通过执行这些代码,可以使用 r2_score 函数计算回归模型的 R² 分数,即确定性系数拟合优度R² 分数的取值范围在 0 到 1 之间,数值越接近 1 表示模型对数据的拟合程度越好,而越接近 0 则表示模型的拟合效果较差。R² 分数可以帮助我们评估回归模型的性能,并与其他模型进行比较。


7.3 群集指标

7.3.1 调整兰德系数

  使用 scikit-learn 中的 adjusted_rand_score 函数来计算聚类算法的调整兰德指数(Adjusted Rand Index)。

>>> from sklearn.metrics import adjusted_rand_score
>>> adjusted_rand_score(y_true, y_pred) 

  使用 adjusted_rand_score 函数计算聚类算法的调整兰德指数。调整兰德指数的取值范围在 -1 到 1 之间数值越接近 1 表示聚类结果与真实标签的一致性越高,而数值越接近 0 表示聚类结果与随机划分的一致性一样,数值越接近 -1 表示聚类结果与真实标签的一致性越低。调整兰德指数可以帮助评估聚类算法的性能,并与其他算法进行比较。


7.3.2 同质性

  使用 scikit-learn 中的 homogeneity_score 函数来计算聚类结果的同质性得分(Homogeneity Score)。

>>> from sklearn.metrics import homogeneity_score
>>> homogeneity_score(y_true, y_pred) 

  使用 homogeneity_score 函数计算聚类结果的同质性得分。同质性得分的取值范围在 0 到 1 之间,数值越接近 1 表示聚类结果中的样本更倾向于同属于一个类别的聚类簇,而数值越接近 0 表示聚类结果的同质性较差,样本分布更分散。同质性得分可以帮助评估聚类算法在保持同类样本集中性方面的性能,并与其他算法进行比较。


7.3.3 V-measure

  使用 scikit-learn 中的 v_measure_score 函数来计算聚类结果的 V-measure 分数

>>> from sklearn.metrics import v_measure_score
>>> v_measure_score(y_true, y_pred) 

  使用 v_measure_score 函数计算聚类结果的 V-measure 分数。V-measure 分数的取值范围在 0 到 1 之间,数值越接近 1 表示聚类结果的同质性和完整性越高,而数值越接近 0 表示聚类结果的质量较差


7.4 交叉验证

  使用 scikit-learn 中的 cross_val_score 函数来进行 交叉验证计算模型的性能评估指标

>>> from sklearn.cross_validation import cross_val_score
>>> print(cross_val_score(knn, X_train, y_train, cv=4))
>>> print(cross_val_score(lr, X, y, cv=2))

  使用 cross_val_score 函数对模型进行交叉验证并计算性能评估指标。交叉验证可以帮助我们更全面地评估模型的性能,并确保评估指标的可靠性。在交叉验证中,输入数据会被分成若干个折(即交叉验证的折数),每一折轮流作为验证集,剩余折作为训练集,用于拟合模型并计算性能评估指标。最终,所有折的性能评估指标会被汇总,得出 模型的平均性能评估指标


八、模型调整

8.1 栅格搜索

  使用 scikit-learn 中的 GridSearchCV 类来进行 网格搜索参数调优

>>> from sklearn.grid_search import GridSearchCV
>>> params = {"n_neighbors": np.arange(1,3), "metric": ["euclidean", "cityblock"]}
>>> grid = GridSearchCV(estimator=knn, param_grid=params)
>>> grid.fit(X_train, y_train)
>>> print(grid.best_score_)
>>> print(grid.best_estimator_.n_neighbors)

  通过执行这些代码,可以使用 GridSearchCV 类对模型的参数空间进行穷举搜索,并找到最佳的参数组合。网格搜索可以帮助我们找到最优的参数设置,从而提高模型的性能。在搜索过程中,将对每一组参数进行交叉验证,并根据性能评估指标选择最佳的参数组合。


8.2 随机参数优化

  使用 scikit-learn 中的 RandomizedSearchCV 类来进行 随机搜索参数调优

>>> from sklearn.grid_search import RandomizedSearchCV
>>> params = {"n_neighbors": range(1,5), "weights": ["uniform", "distance"]}
>>> rsearch = RandomizedSearchCV(estimator=knn, param_distributions=params, cv=4, n_iter=8, random_state=5)
>>> rsearch.fit(X_train, y_train)
>>> print(rsearch.best_score_)

  使用 RandomizedSearchCV 类对模型的参数空间进行随机搜索,并找到最佳的参数组合。随机搜索相比于网格搜索,可以更高效地在大范围的参数空间中寻找最佳参数组合。在搜索过程中,将对每一组参数进行交叉验证,并根据性能评估指标选择最佳的参数组合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/94013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React18入门(第一篇)——JSX、TSX语法详解

文章目录 一、JSX 语法简介二、和 HTML 标签的几点不同三、JSX 属性四、JSX 事件4.1 简单点击事件4.2 类型限制4.3 带参数&#xff0c;箭头函数 五、插入 JS 变量六、JSX 中使用条件判断七、循环 一、JSX 语法简介 JSX - 是 JS 的扩展&#xff0c;写在 JS 代码里面&#xff0c…

STM32 DMA从存储器发送数据到串口

1.任务描述 &#xff08;1&#xff09;ds18b20测量环境温度存储到存储器&#xff08;数组&#xff09;中。 &#xff08;2&#xff09;开启DMA将数组中的内容&#xff0c;通过DMA发送到串口 存在问题&#xff0c;ds18b20读到的数据是正常的&#xff0c;但是串口只是发送其低…

WSL安装异常:WslRegisterDistribution failed with error: 0xc03a001a

简介&#xff1a;如果文件夹右上角是否都有两个相对的蓝色箭头&#xff0c;在进行安装wsl时&#xff0c;设置就会抛出 Installing WslRegisterDistribution failed with error: 0xc03a001a的异常 历史攻略&#xff1a; 卸载WSL WSL&#xff1a;运行Linux文件 WSL&#xff1…

Java下正面解除警告Unchecked cast: ‘java.lang.Object‘ to ‘java.util.ArrayList‘

就是我在反序列化时&#xff0c;遇到这样一个警告&#xff1a; Unchecked cast: java.lang.Object to java.util.ArrayList<com.work1.Student>然后我去网上查&#xff0c;有些人说用SuppressWarnings(“unchecked”)去忽略警告&#xff0c;但是我觉得作为一名合格的程序…

postgresql-自增字段

postgresql-自增字段 标识列IdentitySerial类型Sequence序列 标识列Identity -- 测试表 create table t_user( -- 标识列自增字段user_id integer generated always as identity primary key,user_name varchar(50) not null unique );-- 自动生成序列 CREATE SEQUENCE public…

【重拾C语言】三、分支程序设计(双分支和单分支程序设计、逻辑判断、多分支程序设计、枚举类型表示;典型例题:判断闰年和求一元二次方程根)

目录 前言 三、分支程序设计 3.1 判断成绩是否及格——双分支程序设计 3.2 成绩加上获奖信息—单分支程序设计 3.3 逻辑判断——布尔类型 3.4 获奖分等级——多分支程序设计 3.5 表示汽车种类——枚举类型 3.6 例题 3.6.1 例题——判断某个年份是否闰年 3.6.2 例题—…

MySQL 性能优化

MySQL 性能优化 数据库命名规范 所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用 MySQL 保留关键字&#xff08;如果表名中包含关键字查询时&#xff0c;需要将其用单引号括起来&#xff09;数据库对象的命名要能做到见名识意&#xff0c;并且最…

【记录】IDA|IDA怎么查看当前二进制文件自动分析出来的内存分布情况(内存范围和读写性)

IDA版本&#xff1a;7.6 背景&#xff1a;我之前一直是直接看Text View里面的地址的首尾地址来判断内存分布情况的&#xff0c;似乎是有点不准确&#xff0c;然后才想到IDA肯定自带查看内存分布情况的功能&#xff0c;而且很简单。 可以通过View-Toolbars-Segments&#xff0c…

同学苹果ios的ipa文件应用企业代签选择签名商看看这篇文章你再去吧

同学我们要知道随着互联网的发展&#xff0c;苹果应用市场的火爆&#xff0c;越来越多的开发者加入到苹果应用开发行业中来。同时&#xff0c;苹果应用市场上的应用也在不断增多&#xff0c;用户数量也在不断增加&#xff0c;苹果应用代签是指通过第三方公司为开发者的应用进行…

计算机视觉——飞桨深度学习实战-起始篇

后面我会直接跳到实战项目&#xff0c;将计算机视觉的主要任务和目标都实现一遍&#xff0c;但是需要大家下去自己多理解和学习一下。例如&#xff0c;什么是深度学习&#xff0c;什么是计算机视觉&#xff0c;什么是自然语言处理&#xff0c;计算机视觉的主要任务有哪些&#…

14.(开发工具篇github)如何在Github配置ssh key

第一步&#xff1a;检查本地主机是否已经存在ssh key 上图表示已存在。跳第三步 第二步&#xff1a;生成ssh key ssh-keygen -t rsa -C "xxxxxx.com"第三步&#xff1a;获取ssh key公钥内容&#xff08;id_rsa.pub&#xff09; cat id_rsa.pub第四步&#xff1a;G…

CompletableFuture 异步编排

目录 CompletableFuture 的详解代码测试配置类的引入Demo1Demo2CompletableFuture的async后缀函数与不带async的函数的区别ThreadPoolTaskExecutor 和 ThreadPoolExecutor 的区别Spring 线程池的使用业务使用多线程的原因场景一:场景二:FutureTask介绍线程池为什么要使用阻塞队…

数据结构 1.1 初学数据结构

数据结构的基本概念 数据结构在学什么&#xff1f; 如何用程序代码把现实世界的问题信息化 如何用计算机高效处理信息从而创造价值 数据&#xff1a; 数据元素、数据项&#xff1a; 数据元素——描述一个个体 数据对象——数据元素之间具有同样的性质 同一个数据对象里的数…

Springboot+Vue+Mysql实现模拟汽车保养系统(附源码)

前言 本项目基于springbootvue搭建的汽车保养的系统&#xff0c;页面较为粗糙&#xff0c;前端好的小伙伴可自行优化。 项目环境 -环境框架后端JDK1.8SpringBootmybatisPlus前端NodeJS16.0Vue2.0ElementPlus数据库MySQL8.0- 数据库设计 数据表备注banner轮播图表car用户汽…

linux命令行配置音频设备

linux命令行配置音频设备 TLTR在linux命令行播放音乐cmus需要开始声音条件功能才能调节播放的音量&#xff0c;看这个链接&#xff0c;继续折腾&#xff0c;have fun! TLTR 以archLinux为例&#xff0c;把下面软件都装一遍。 sudo pacman -S alsa-utils sudo pacman -S alsa-…

算法-数学-斜率-直线上最多的点数

算法-数学-斜率-直线上最多的点数 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/max-points-on-a-line/ 1.2 题目描述 给你一个数组 points &#xff0c;其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 2 暴力搜索斜率…

十二、【漏洞复现】Rails任意文件读取(CVE-2019-5418)

十二、【漏洞复现】Rails任意文件读取(CVE-2019-5418&#xff09; 12.1、漏洞原理 Ruby on Rails是一个使用 Ruby 语言写的开源 Web 应用框架&#xff0c;它是严格按照 MVC 结构开发的。它努力使自身保持简单&#xff0c;来使实际的应用开发时的代码更少&#xff0c;使用最少…

BGP高级特性——4字节AS号

目录 4字节AS号 相关概念 两种过渡属性 4字节AS号的格式 4字节AS号建立邻居 4字节AS号路由传递 配置命令 4字节AS号 相比于2字节AS号&#xff0c;范围更大。由1~65535扩展到1~4294967295 支持4字节AS号的BGP设备兼容仅支持2字节AS号的BGP设备 相关概念 Speaker&#…

多线程(如何理解pthread库)

上一节&#xff0c;我们主要介绍了pthread库中一些常见函数的用法&#xff0c;这节我们主要分析一下pthread库到底是什么&#xff1f; 什么是库 我们之前提过&#xff0c;在每一个linux平台下&#xff0c;必定会存在对应的pthread库 它存在于/lib64这个路径底下 换句话说&am…

【从入门到起飞】IO高级流(1)(缓冲流,转换流,序列化流,反序列化流)

&#x1f38a;专栏【JavaSE】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f384;缓冲流&#x1f354;字节缓冲流&#x1f6f8;一次读取…