【机器学习】03-转换器和预估器、K-近邻算法、朴素贝叶斯算法、决策树等算法知识

分类算法

一、sklearn转换器和预估器

1 转换器 - 特征工程的父类

  1. fit_transform()
  2. fit() 计算 每一列的平均值、标准差
  3. transform() (x - mean) / std进行最终的转换

2 估计器(sklearn机器学习算法的实现)
估计器(estimator)–一类实现算法的API

  1. 实例化一个estimator
  2. estimator.fit(x_train, y_train) 计算 —— 训练,调用完毕,模型生成
  3. 模型评估:
    1)直接比对真实值和预测值
    y_predict = estimator.predict(x_test)
    y_test == y_predict
    2)计算准确率 accuracy = estimator.score(x_test, y_test)
    转换器和预估器

二、K-近邻算法(KNN)

1. 什么是K-近邻算法
核心思想:
根据你的“邻居”来推断出你的类别

2. K-近邻算法(KNN)原理
K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法总体来说KNN算法是相对比较容易理解的算法
定义:
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属―某一个类别,则该样本也属于这个类别。

   k = 1       容易受到异常点的影响

如何确定谁是邻居?
计算距离:
距离公式
欧氏距离
欧式距离
曼哈顿距离 --绝对值距离
明可夫斯基距离

注意:

  • k 值取得过小,容易受到异常点的影响
  • k 值取得过大,样本不均衡的影响

3.K-近邻算法API

sklearn.neighbor.KNeighborsClassifier(n_neighbors=5, algorithm='auto')
  • n_neighbors:int型k值,k_neighbors查询默认使用的邻居数(默认为5)
  • algorithm:{‘auto’,‘ball_tree’,‘kd_tree’}之一,‘ball_tree’将会使用 BallTree,‘kd_tree"将使用KDTree。'auto’将尝试根据传递给fit方法的值来决定最合适的算法。(不同实现方式影响效率)

4.案例1:鸢尾花种类预测

  • 获取数据
  • 数据集划分
  • 特征工程
    标准化
    KNN预估器流程
  • 模型评估

数据集介绍
lris数据集是常用的分类实验数据集,由Fisher,1936收集整理。lris也称鸢尾花卉数据集,是一类多重变量分析的数据集。

示例:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

def knn_iris():
    # 用knn算法对鸢尾花进行分类
    # 步骤:
    #获取数据
    #数据集划分
    #特征工程
    #标准化
    #KNN预估器流程
    #模型评估

    #1获取数据
    iris = load_iris()
    #2数据集划分  随机数种子?
    x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=6)
    #3特征工程 标准化
    #在划分前就标准化会让训练集内容干扰测试集结果,导致标准化的数据有偏差
    transfer = StandardScaler()
    x_train =  transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    #为什么测试集可以直接transform?因为transfer是一个对象会将计算结果保存在对象的属性中
    #fit直接用于计算
    #默认训练集和测试集有同样的均值和标准差!
    #y_train:目标值,分类
    
    #4 KNN 调入训练,预估器流程
    estimator = KNeighborsClassifier(n_neighbors=3)
    estimator.fit(x_train,y_train)

    # 模型评估
    #方法1:直接比对真实值 预测值
    y_predict = estimator.predict(x_test)
    print("y_predict:\n",y_predict)
    print("直接比对:\n",y_test == y_predict)

    #方法2:计算准确率
    score = estimator.score(x_test,y_test)
    print("准确率:\n",score)
    return None

if __name__ == '__main__':
   #码1:Kn算法
   knn_iris();

结果:
结果1
5 K-近邻总结
优点:简单,易于实现,无需训练
缺点:懒惰算法,对测试样本分类时的计算量大,内存开销大;必须指定K值,K值选择不当则分类精度不能保证
使用场景:小数据场景,几千~几万样本

三、模型选择与调优

学习目标:
说明交叉验证过程
说明超参数搜索过程
应用GridSearchCV实现算法参数的调优
应用:
鸢尾花数据集预测

1.交叉验证

将拿到的训练数据,分为训练和验证集。以下图为例:将数据分成4份,其中一份作为验证集。然后经过4次(组)的测谜次都更换不同的验证集。即得到4组模型的结果,取平均值作为最终结果。又称4折交叉验证。

我们之前知道数据分为训练集和测试集,但是为了让从训练得到模型结果更加准确。做以下处理

  • 训练集:训练集+验证集
  • 测试集:测试集
    1
    目的: 为了让被评估的模型更加准确可信

2.超参数搜索—网格搜索(Grid Search)

通常情况下,很多参数是需要手动指定的(如K-近邻算法中的K值),这种叫超参数。
但是手动过程繁杂,所以需要对模型预设几种超参数组合。每组超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型

3.模型选择与调优API

sklearn.model_selection.GridSearchCV(estimator, param_grid=None, cv=None)

对估计器的指定参数进行详尽搜索

  • estimator:估计器对象
  • param_grid:估计器参数(dict){“n_neighbors”:[1,3,5]}
  • cv:指定几折交叉验证
  • fit():输入训练数据
  • score():准确率

结果分析:

  • 最佳参数:best_params_
  • 最佳结果:best_score_
  • 最佳估计器:best_estimator_
    交叉验证结果:cv_results_

4.鸢尾花案例增加K值调优

# -*-codeing = utf-8 -*-
# @Time : 2023/3/27 9:10
# @Author : 东
# @File : KNN算法调优
# @Software: PyCharm
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCV
def knn_iris():
    # 用knn算法对鸢尾花进行分类
    # 步骤:
    #获取数据
    #数据集划分
    #特征工程
    #标准化
    #KNN预估器流程
    #模型评估

    # 获取数据
    iris = load_iris()
    # 2数据集划分  随机数种子?
    x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=6)
    # 3特征工程 标准化
    #在划分前就标准化会让训练集内容干扰测试集结果,导致标准化的数据有偏差
    transfer = StandardScaler()
    x_train =  transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    #为什么测试集可以直接transform?因为transfer是一个对象会将计算结果保存在对象的属性中
    #fit直接用于计算
    #默认训练集和测试集有同样的均值和标准差!
    #y_train:目标值,分类
    #4 KNN 调入训练,预估器流程
    estimator = KNeighborsClassifier(n_neighbors=3)
    estimator.fit(x_train,y_train)

    # 模型评估
    #方法1:直接比对真实值 预测值
    y_predict = estimator.predict(x_test)
    print("y_predict:\n",y_predict)
    print("直接比对:\n",y_test == y_predict)

    #方法2:计算准确率
    score = estimator.score(x_test,y_test)
    print("准确率:\n",score)
    return None

def knn_iris_gscv():
    # 用knn算法对鸢尾花进行分类、网格搜索、交叉验证

    # 获取数据
    iris = load_iris()
    # 2数据集划分  随机数种子?
    x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=6)
    # 3特征工程 标准化
    #在划分前就标准化会让训练集内容干扰测试集结果,导致标准化的数据有偏差
    transfer = StandardScaler()
    x_train =  transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    #4 KNN 调入训练,预估器流程
    estimator = KNeighborsClassifier()

    #加入网格搜索、交叉验证
    #参数准备
    param_dict = {"n_neighbors":[1,3,5,7,9,11]}
    estimator = GridSearchCV(estimator,param_grid=param_dict,cv=10)
    estimator.fit(x_train,y_train)

    # 模型评估
    #方法1:直接比对真实值 预测值
    y_predict = estimator.predict(x_test)
    print("y_predict:\n",y_predict)
    print("直接比对:\n",y_test == y_predict)

    #方法2:计算准确率
    score = estimator.score(x_test,y_test)
    print("准确率:\n",score)

    #最佳参数:best_params_
    print("最佳参数:\n",estimator.best_params_)
    #最佳结果:best_score_
    print("最佳结果:\n", estimator.best_score_)
    #最佳估计器:best_estimator_
    print("最佳估计器:\n", estimator.best_estimator_)
    #交叉验证结果:cv_results_
    print("交叉验证结果:\n", estimator.cv_results_)
    return None

if __name__ == '__main__':
   #码1:Kn算法
   knn_iris();
   #码2:调优
   knn_iris_gscv();

结果:
结果2
结果3

四、朴素贝叶斯算法

学习目标:
说明条件概率与联合概率
说明贝叶斯公式,以及特征独立的关系
记忆贝叶斯公式
知道拉普拉斯平滑系数
应用贝叶斯公式实现概率的计算

1.什么是朴素贝叶斯算法

朴素贝叶斯(Naive Bayes): 朴素+贝叶斯,
是一种简单经典的分类算法,它的经典应用案例为人所熟知:文本分类(如垃圾邮件过滤)。
朴素
假设:特征与特征之间相互独立

2.概率论基础

先验概率:即基于统计的概率,是基于以往历史经验和分析得到的结果,不需要依赖当前发生的条件。

后验概率:则是从条件概率而来,由因推果,是基于当下发生了事件之后计算的概率,依赖于当前发生的条件。

条件概率:记事件A发生的概率为P(A),事件B发生的概率为P(B),则在B事件发生的前提下,A事件发生的概率即为条件概率,记为P(A|B)。
在这里插入图片描述
贝叶斯公式: 贝叶斯公式便是基于条件概率,通过P(B|A)来求P(A|B)
在这里插入图片描述
公式
3.拉普拉斯平滑系数
目的:防止计算出的分类概率为0.
在这里插入图片描述

3.算法实现

API:

sklearn.naive_bayes.MultinomialNB(alpha=1.0)

案例:20类新闻分类
3.1 步骤分析
1)获取数据
2)划分数据集
3)特征工程:文本特征抽取
4)朴素贝叶斯预估器流程
5)模型评估

# -*-codeing = utf-8 -*-
# @Time : 2023/3/27 16:30
# @Author : 东
# @File : 02_day_pusuClass.py
# @Software: PyCharm
from sklearn.model_selection import train_test_split    # 划分数据集
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer  # 文本特征抽取
from sklearn.naive_bayes import MultinomialNB           # 朴素贝叶斯


def nb_news():
    """
    用朴素贝叶斯算法对新闻进行分类
    :return:
    """
    # 1)获取数据
    news = fetch_20newsgroups(subset='all')

    # 2)划分数据集
    x_train, x_test, y_train, y_test = train_test_split(news.data, news.target)

    # 3)特征工程:文本特征抽取
    transfer = TfidfVectorizer()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    # 4)朴素贝叶斯算法预估器流程
    estimator = MultinomialNB()
    estimator.fit(x_train, y_train)

    # 5)模型评估
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接比对真实值和预测值:\n", y_test == y_predict)  # 直接比对

    # 方法2:计算准确率
    score = estimator.score(x_test, y_test)  # 测试集的特征值,测试集的目标值
    print("准确率:", score)

    return None

if __name__ == "__main__":
    nb_news()

结果:
结果
总结:

  • 优点: 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率 ;对缺失数据不太敏感,算法也比较简单,常用于文本分类;分类准确度高,速度快
  • 缺点: 由于使用了样本属性独立性的假设,所以如果特征属性有关联时其效果不好

五、决策树

学习目标:
说明信息熵的公式以及作用
说明信息增益的公式作用
应用信息熵实现计算特征的不确定性减少程度
了解决策树的三种算法实现

1.认识决策树

决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-else结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法。
高效决策: 看特征先后顺序

2. 决策树分类原理详解

银行贷款数据
图中有四个特征,年龄、有工作、有自己的房子、信贷情况。
问题: 如何对这些客户进行分类预测? 你是如何去划分?(实现最优解)
决策树真实划分:
答案
->原理
信息熵、信息增益等
需要用到信息论的知识!!!问题:通过例子引入信息嫡

->信息论基础
1)信息
香农 : 消除随机不定性的东西
小明年龄 “我今年18岁” - 信息
小华 "小明明年19岁” - 不是信息

信息的衡量-信息量–信息嫡

2)信息嫡的定义
在这里插入图片描述

3.决策树的划分依据之一-----信息增益

定义与公式
特征A对训练数据集D的信息增益g(D.A),定义为集合D的信息嫡H(D)与特征A给定条件下D的信息条件嫡H(DIA)之差,即公式为:
信息增益
在这里插入图片描述

注: 信息增益表示得知特征X的信息而息的不确定性减少的程度使得类Y的信息嫡减少的程度

4. 决策树API

sklearn.tree.DecisionTreeClassifier(criterion='gini', max_depth=None, random_state=None)
  • 决策树分类器
  • criterion:默认是“gini”系数,也可以选择信息增益的熵‘entropy’
  • max_depth:树的深度大小
  • random_state:随机数种子

5.决策树用于鸢尾花数据集

案例源码:

from sklearn.datasets import load_iris                  # 获取数据集
from sklearn.model_selection import train_test_split    # 划分数据集
from sklearn.naive_bayes import MultinomialNB              # 朴素贝叶斯
from sklearn.tree import DecisionTreeClassifier

def decision_iris():
    """
    决策树对鸢尾花进行分类
    :return:
    """
    # 1)获取数据集
    iris = load_iris()

    # 2)划分数据集
    x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)  # 随机数种子

    # 不用做特征工程:标准化
    # 3)决策树预估器
    estimator = DecisionTreeClassifier(criterion='entropy')
    estimator.fit(x_train, y_train)

    # 4)模型评估
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接必读真实值和预测值:\n", y_test == y_predict)  # 直接比对

    # 方法2:计算准确率
    score = estimator.score(x_test, y_test)  # 测试集的特征值,测试集的目标值
    print("准确率:", score)
    return None

if __name__ == "__main__":
    decision_iris()

结果:
在这里插入图片描述

6.决策树可视化

1 保存树的结构到dot文件

sklearn.tree.export_graphviz()  # 该函数能够导入dot文件

tree.export.graphviz(estimator, out_file='tree.dot', feature_names=[","])

2 网站显示结构
http://webgraphviz.com/

在上述例子中引入包:

from sklearn.tree import export_graphviz

并加上代码

export_graphviz(estimator,out_file="iris_tree.dot",feature_names=iris.feature_names)

运行生成的iris_tree.dot文件。
1

将其复制粘贴到网站里,生成:在这里插入图片描述

7.决策树总结

  • 优点:简单的理解和解释,树木可视化
  • 缺点:决策树学习者可以创建不能很好地推广数据的过于复杂的树,这被称为过拟合
  • 改进:
    剪枝cart算法(决策树API当中已经实现,随机森林参数调优有相关介绍)
    随机森林

8.案例:泰坦尼克号乘客生存预测

流程分析:特征值、目标值
1)获取数据
2)数据处理:缺失值处理,特征值->字典类型,
3)准备好特征值、目标值
4)划分数据集
5)特征工程:字典特征处理
6)决策树预估器流程
7)模型评估

import pandas as pd

# 1、获取数据
path = "C:/Users/zdb/Desktop/machine_learning/DataSets/titanic.csv"
titanic = pd.read_csv(path) #1313 rows × 11 columns

# 筛选特征值和目标值
x = titanic[["pclass", "age", "sex"]]
y = titanic["survived"]

# 2、数据处理
# 1)缺失值处理
x["age"].fillna(x["age"].mean(), inplace=True)

# 2)转换成字典
x = x.to_dict(orient="records")

from sklearn.model_selection import train_test_split
# 3、数据集划分
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=22)

# 4、字典特征抽取
from sklearn.feature_extraction import DictVectorizer
transfer = DictVectorizer()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

from sklearn.tree import DecisionTreeClassifier, export_graphviz

# 3)决策树预估器
estimator = DecisionTreeClassifier(criterion='entropy')
estimator.fit(x_train, y_train)

# 4)模型评估
y_predict = estimator.predict(x_test)
print("y_predict:\n", y_predict)
print("直接必读真实值和预测值:\n", y_test == y_predict)  # 直接比对

# 方法2:计算准确率
score = estimator.score(x_test, y_test)  # 测试集的特征值,测试集的目标值
print("准确率:", score)

# 可视化决策树
export_graphviz(estimator, out_file='titanic_tree.dot', feature_names=transfer.get_feature_names())

import matplotlib.pyplot as plt
from sklearn.tree import plot_tree
plot_tree(decision_tree=estimator)
plt.show()

六、随机森林

集成学习方法之随机森林
学习目标:
说明随机森林每棵决策树的建立过程
直达为什么需要随机有放回(Booststrap)的 抽样
说明随机森林的超参数

1.什么是集成学习方法

集成学习方法通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型,各种独立地学习和做出预测。这些预测最后结合成组合预测,因此优于任何一个单分类做出的预测

2.什么是随机森林

在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别数输出的类别的众数而定
例如,如果训练了5棵树,5棵树的结果是True ,1棵树的结果是False,那么最终结果为True

3.随机森林原理过程

两个随机:
训练集随机:BoostStrap,N个样本中随机有放回抽样
特征值随机:从M个特征中随机抽取m个特征,M>>m
训练集:特征值、目标值

为什么采用BootStrap抽样
1、为什么要随机抽样训练集?
如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样的
2、为什么要有放回地抽样?
如果不是有放回的抽样,那么每棵树的训练样本都是不同的,都是没有交集的,这样每棵树都是“有偏的”,都是绝对“片面的”,也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树的投票表决

4.随机森林API

随机森林分类器

sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None, /
bootstrap=True, random_state=None, min_samples_split=2)
  • n_estimators:integer,optional(default=10)森林里的树木数量,可以用网格搜索
  • criteria:string,可选(default=‘gini’),分割特征的测量方法
  • max_depth:integer或None,可选(默认无),树的最大深度5,8,15,25,30 可以用网格搜索
  • max_teatures=‘auto’,每个决策树的最大特征数量
  • if ‘auto’ ,then max_features = sqrt(n_features)
  • if ‘sqrt’ ,then max_features = sqrt(n_features)
  • if ‘log2’ ,then max_features = log2(n_features)
  • if None,then max_features = n_features
  • booststrap:boolean,optional(default=True)是否在构建树时使用放回抽样
  • min_samples_split:节点划分最少样本数
  • min_samples_leaf:叶子节点的最小样本数

超参数:n_estimator,max_depth,min_samples_split,min_samples_leaf

在之前的代码中增加这个代码块

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
estimator = RandomForestClassifier()

# 加入网格搜索与交叉验证
# 参数准备
param_dict = {"n_estimators":[120,200,300,500,800,1200], "max_depth":[5,8,15,25,30]}
estimator = GridSearchCV(estimator, param_grid=param_dict, cv=3)  # 10折,数据量不大,可以多折
estimator.fit(x_train, y_train)
# 5、模型评估
# 方法1:直接比对真实值和预测值
y_predict = estimator.predict(x_test)
print("y_predict:\n", y_predict)
print("直接必读真实值和预测值:\n", y_test == y_predict)  # 直接比对
# 方法2:计算准确率
score = estimator.score(x_test, y_test)  # 测试集的特征值,测试集的目标值
print("准确率:", score)

# 查看最佳参数:best_params_
print("最佳参数:", estimator.best_params_)
# 最佳结果:best_score_
print("最佳结果:", estimator.best_score_)
# 最佳估计器:best_estimator_
print("最佳估计器:", estimator.best_estimator_)
# 交叉验证结果:cv_results_
print("交叉验证结果:", estimator.cv_results_)

结果

5.随机森林总结

  • 在当前所有算法中,具有极好的准确率
  • 能够有效地运行在大数据集上,处理具有高维特征的输入样本,而且不需要降维
  • 能够评估各个特征在分类问题上的重要性

备注–参考学习:
B站-黑马程序员3天快速入门python机器学习
笔记内容随时补充,如需相关资料可私信本人

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

剑指offer JZ23 链表中环的入口结点

Java JZ23 链表中环的入口结点 文章目录Java JZ23 链表中环的入口结点一、题目描述二、hash法,记录第一次重复的结点三、快慢指针法使用hash法和快慢指针法解决剑指offer 第JZ23 链表中环的入口结点的问题。 一、题目描述 给一个长度为n链表,若其中包含环…

【新】(2023Q2模拟题JAVA)华为OD机试 - 寻找链表的中间结点

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:寻找链表的中间结点 题目 给…

利用自动化平台可以做的那亿点事 |得物技术

前言 相信大家对接口自动化已经不陌生了,这是几乎我们每个迭代都会投入的事情,但耗费了这么多精力去编写和维护,实际的收益如何呢?如果收益不好,是不是说明我们自动化 case 的实现方式、使用方式还有改进的地方呢&…

第09章_子查询

第09章_子查询 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生,目前在某公…

【ABAP】ME55双击跳转MD04增强

最近收到了一个需求,大致的要求是在标准报表ME55的ALV短文本列双击后跳转到MD04的详情。刚开始没有找到增强点想用间接的办法实现,在ME55上增加一列,展示想看到的内容,最后由于需要展示的内容太多,该方案被舍弃。 经过…

深度学习实战19(进阶版)-SpeakGPT的本地实现部署测试,基于ChatGPT在自己的平台实现SpeakGPT功能

大家好,我是微学AI,今天给大家带来SpeakGPT的本地实现,在自己的网页部署,可随时随地通过语音进行问答,本项目项目是基于ChatGPT的语音版,我称之为SpeakGPT。 ChatGPT最近大火,其实在去年12月份…

SpringBoot @Transactional事务详解

事务用处及作用 事务主要是保证数据统一、一致的一种操作。 详细的一些专用术语在此这里不会说太多,如需了解自行百度了(还不是枯燥乏味),大致就是这意思。 事务用处 比如坤坤,坤坤拿着100元去买鸡,一个…

JAVA ---程序流程

(一)引言 在生活中,我们经常会发现在医院或者官方机构办事是要走流程的,同样的程序必须能操控自己的世界,在执行过程中作出判断与选择。在Java中,通过流程控制语句可实现程序执行流程的随意控制&#xff0…

C#中使用I/O文件流

流,即是二进制数值,文件和流 I/O(输入/输出)是指在存储媒介中传入或传出数据。 在 .NET 中,System.IO 命名空间包含允许以异步方式和同步方式对数据流和文件进行读取和写入操作的类型。 这些命名空间还包含对文件执行压…

Android开发 Intent

1. Intent 在组件之间传递信息,一般需要设置发送方,接收方和数据。 下图是Intent 的常用属性: 2. Intent分类 1)显式Intent:精确匹配发送方和接收方 方法一: startActivity(new Intent(this,MainActiv…

USB抓包分析

1、USB传输协议基本概念 一个传输(控制、批量、中断、等时):由多个事务transaction组成; 一个事务transaction (IN、OUT、SETUP):由一多个包Packet组成。USB数据在主机与usb设备间被传输,之间的关联叫做管道pipe。一个USB设备可以…

图片转字符画

目录一、字符画二、制作方式一、字符画 字符画:用字符填充创作的人物或动物图片,就像下面这样: 二、制作方式 1.使用Ps的文字工具和蒙版工具来实现 可以看下YouTube上这个教程视频:Photoshop CS6 Tutorial: How to Make an Edi…

企业电子招投标采购系统源码之首页设计

功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外部…

详解TCP、HTTP中的保活机制 | Keepalive和Keep-Alive

目录 🌲 HTTP 的 Keep-Alive 🌲 TCP 的 Keepalive 🌲 最后总结 🌲 参考资料 TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗? 这是个好问题,应该有不少人都会搞混,因为这两个东西看上…

DNS协议--笔记

引自: 什么是DNS? - 知乎 (zhihu.com) 超详细 DNS 协议解析 - 知乎 (zhihu.com) IP 地址:一长串能够唯一地标记网络上的计算机的数字域名:又称网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组…

rust语言精要

rust基本组成 编译器:Rust是一门静态编译型语言。Rust官方的编译器叫rustc,负责将 Rust源代码编译为可执行文件或其他库文件(.a、.so、.lib、.dll等)。特点是跨平台的,后端用了LLVM。 核心库和标准库 Rust语言的语法由…

Prometheus之PromQL语法详解及使用方法

本文是向大家介绍Prometheus中PromQL的查询语法以及常用语句,可以帮助大家理解和掌握Prometheus的查询语言。1、简介Prometheus是通过指标名称(metrics name)以及对应的一组标签(labelset)唯一定义一条时间序列。指标名…

如何选择Facebook的各种广告形式来获取用户?

Facebook广告是吸引潜在客户的重要工具,但盲目投放广告却很难达到理想效果。在选择广告格式时,需要考虑到品牌和业务目标,以及目标受众的特征和偏好。下面介绍8种Facebook广告格式,不论您是想用视频、图片或文字,还是结…

云端Docker搭建ABY库以及本地CLion使用

文章目录ABY的搭建以及使用前言ABY库的下载、安装及测试CLion配置后续杂项项目改名使用其他的库最后ABY的搭建以及使用 前言 仅做记录,仅供参考,不同人有不同的使用方式命令手敲,可能有错,自己辨识勿问,我懂的也不多…

什么牌子的蓝牙耳机音质好又便宜?国产音质好的蓝牙耳机推荐

目前的蓝牙耳机市场涌现了越来越多的蓝牙耳机,不同价位主打不同的性能,有主打佩戴的,主打音质的,主打降噪的,主打游戏的等等。那么,什么牌子的蓝牙耳机音质好又便宜?针对这个问题,我…