当前位置: 首页 > news >正文

【机器学习】在【PyCharm中的学习】:从【基础到进阶的全面指南】

目录

第一步:基础准备

1.1 Python基础

1.1.1 学习Python的基本语法

1.1.2 控制流

1.1.3 函数和模块

1.2 安装PyCharm

1.2.1 下载并安装

第二步:数据科学基础

2.1 安装必备库

2.1.1 使用pip安装

2.2 数据操作

2.2.1 Pandas基础操作

2.2.2 NumPy基础操作

第三步:机器学习基础​编辑

3.1 了解机器学习基本概念

3.1.1 监督学习

3.1.2 非监督学习

3.1.3 模型训练和评估

3.2 实践机器学习模型

3.2.1 数据预处理

3.2.2 简单模型实现

第四步:进阶学习

4.1 深入学习模型

4.1.1 复杂模型和算法

4.1.2 调参、交叉验证和模型优化

4.2 项目实践

4.2.1 选择项目

4.2.2 数据收集和清洗

第五步:学习资源

5.1 在线课程和文档

5.1.1 在线课程

5.1.2 官方文档

5.2 书籍推荐

5.2.1 《Python机器学习》

5.2.2 《机器学习实战》

总结 


61cfbbf2b266432f8ad08ee39c6dca08.gif

专栏:机器学习笔记

pycharm专业版免费激活教程见资源,私信我给你发

python相关库的安装:pandas,numpy,matplotlib,statsmodels

第一步:基础准备

1.1 Python基础

1.1.1 学习Python的基本语法

变量和数据类型

  • 学习如何声明变量,理解Python的弱类型特性。
  • 掌握基本数据类型:整数、浮点数、字符串、布尔值和None。

示例代码:

a = 10  # 整数
b = 3.14  # 浮点数
c = "Hello, Python!"  # 字符串
d = True  # 布尔值
e = None  # 空值

1.1.2 控制流

条件语句

掌握if、elif和else语句的使用。

示例代码:

age = 18
if age >= 18:print("You are an adult.")
elif age > 12:print("You are a teenager.")
else:print("You are a child.")

循环语句

  • 学习for循环和while循环,理解其应用场景。

示例代码:

# for循环
for i in range(5):print(i)# while循环
count = 0
while count < 5:print(count)count += 1

1.1.3 函数和模块

函数

  • 学习如何定义和调用函数,理解参数和返回值的概念。

示例代码:

def greet(name):return f"Hello, {name}!"print(greet("Alice"))

模块

  • 学习如何导入和使用模块,理解标准库的概念。

示例代码:

import mathprint(math.sqrt(16))

1.2 安装PyCharm

1.2.1 下载并安装

  • 下载
    • 访问JetBrains官网,下载PyCharm社区版或专业版安装包。
    • 链接:PyCharm下载页面
  • 安装
    • 运行安装包,按照提示完成安装。
    • 安装过程中,可以选择安装路径和附加组件(如Git、Anaconda等)。
  • 创建新项目
    • 打开PyCharm,点击“New Project”。
    • 选择项目位置和Python解释器,点击“Create”创建项目。
  • 管理项目
    • 理解PyCharm的项目结构,包括项目视图、文件导航、工具窗口等。
    • 学习如何创建Python文件、包和虚拟环境。
  • 基本功能
    • 学习如何运行和调试Python代码,使用断点和调试工具。
    • 学习如何使用代码补全、代码检查和重构工具提高编码效率。
  • 快捷键
    • 熟悉常用快捷键,如:
      • 运行代码:Shift + F10
      • 调试代码:Shift + F9
      • 查找文件:Ctrl + Shift + N
      • 查找类:Ctrl + N
      • 重命名:Shift + F6

第二步:数据科学基础

8c0ecaf6a03b48399c9fece475992a28.png

2.1 安装必备库

2.1.1 使用pip安装

安装NumPy

  • 在PyCharm的终端窗口中,输入以下命令安装NumPy:
    pip install numpy
    
    • NumPy是一个支持大量高维数组与矩阵运算的库,提供了大量的数学函数库。

安装Pandas

  • 在PyCharm的终端窗口中,输入以下命令安装Pandas:
    pip install pandas
    
    • Pandas是一个数据分析和数据操作的库,提供了数据结构和数据分析工具。

安装Matplotlib

  • 在PyCharm的终端窗口中,输入以下命令安装Matplotlib:
    pip install matplotlib
    
    • Matplotlib是一个绘图库,可以生成各种静态、动态和交互式的图表。

安装Scikit-Learn

  • 在PyCharm的终端窗口中,输入以下命令安装Scikit-Learn:
    pip install scikit-learn
    
    • Scikit-Learn是一个机器学习库,提供了各种分类、回归和聚类算法的实现。

2.2 数据操作

2.2.1 Pandas基础操作

读取数据

  • 学习如何使用Pandas读取CSV、Excel和SQL等格式的数据。
  • 示例代码:
  • import pandas as pd# 读取CSV文件
    df = pd.read_csv('data.csv')
    print(df.head())# 读取Excel文件
    df = pd.read_excel('data.xlsx')
    print(df.head())# 读取SQL数据库
    import sqlite3
    conn = sqlite3.connect('database.db')
    df = pd.read_sql_query('SELECT * FROM table_name', conn)
    print(df.head())
    

    数据清洗

  • 学习如何处理缺失值、重复值和异常值。
  • 示例代码:
    # 处理缺失值
    df.dropna(inplace=True)  # 删除缺失值所在行
    df.fillna(0, inplace=True)  # 填充缺失值为0# 处理重复值
    df.drop_duplicates(inplace=True)# 处理异常值
    df = df[df['column_name'] > 0]  # 过滤异常值
    

    数据操作

  • 学习如何进行数据选择、过滤、排序和分组操作。
  • 示例代码:
    # 选择数据
    df_selected = df[['column1', 'column2']]# 过滤数据
    df_filtered = df[df['column1'] > 10]# 排序数据
    df_sorted = df.sort_values(by='column1')# 分组操作
    df_grouped = df.groupby('column1').mean()
    

    2.2.2 NumPy基础操作

数组创建

  • 学习如何使用NumPy创建数组和矩阵。
  • 示例代码:
    import numpy as np# 创建一维数组
    arr1 = np.array([1, 2, 3, 4, 5])# 创建二维数组
    arr2 = np.array([[1, 2, 3], [4, 5, 6]])# 创建全零数组
    zeros = np.zeros((3, 3))# 创建全一数组
    ones = np.ones((2, 2))# 创建等差数组
    arange = np.arange(0, 10, 2)# 创建等间隔数组
    linspace = np.linspace(0, 1, 5)
    

    数组运算

  • 学习如何进行数组运算,包括加减乘除、矩阵运算和广播机制。
  • 示例代码:
    # 数组加减乘除
    arr1 = np.array([1, 2, 3])
    arr2 = np.array([4, 5, 6])
    arr_sum = arr1 + arr2
    arr_diff = arr1 - arr2
    arr_prod = arr1 * arr2
    arr_quot = arr1 / arr2# 矩阵运算
    mat1 = np.array([[1, 2], [3, 4]])
    mat2 = np.array([[5, 6], [7, 8]])
    mat_dot = np.dot(mat1, mat2)  # 矩阵乘法# 广播机制
    arr_broadcast = arr1 + 5  # 每个元素加5
    

    第三步:机器学习基础7a462e508c69407bbede94dcf41fe8d0.png

    3.1 了解机器学习基本概念

    3.1.1 监督学习

  • 定义

    • 监督学习是一种利用已标注数据进行模型训练的方法,包括分类和回归任务。
    • 分类任务示例:垃圾邮件检测(识别邮件是否为垃圾邮件)。
    • 回归任务示例:房价预测(根据特征预测房价)。
  • 特征工程

    • 特征选择:选择对模型性能有显著影响的特征。方法包括过滤法(如方差选择法)、包裹法(如递归特征消除)和嵌入法(如Lasso回归)。
    • 特征提取:将原始特征转换为新的、更具代表性的特征。常用方法有PCA(主成分分析)和LDA(线性判别分析)。

示例代码

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 加载数据集
data = load_iris()
X = data.data
y = data.target# 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

机器学习中的监督学习方法种类繁多,适用于不同类型的任务和数据集。下面详细介绍几种常见的监督学习方法,包括它们的基本原理、适用场景以及优缺点。

1. 线性回归(Linear Regression)

基本原理

线性回归是最简单的监督学习算法之一,主要用于解决回归问题。其基本思想是通过拟合一条直线来预测因变量(目标变量)与自变量(特征变量)之间的关系。

8aaa9ebeac284ee2be4abbb8cbdfcfaa.png

适用场景

  • 预测房价
  • 销售预测
  • 经济指标预测

优缺点

优点:

  • 简单易懂,容易实现
  • 计算效率高

缺点:

  • 对线性关系有强假设,实际问题中不一定成立
  • 对异常值敏感

2. 逻辑回归(Logistic Regression)

基本原理

逻辑回归用于解决二分类问题,其输出是一个概率值,表示样本属于某一类的概率。模型使用sigmoid函数将线性回归的结果映射到(0,1)区间。

5c0dff0f5e08495b909b73baa4948f7a.png

适用场景

  • 信用卡欺诈检测
  • 疾病预测(如癌症检测)
  • 客户流失预测

优缺点

优点:

  • 实现简单,计算效率高
  • 输出结果具有概率意义

缺点:

  • 只能处理线性可分问题
  • 对异常值敏感

3. 决策树(Decision Tree)

基本原理

决策树通过递归地将数据分成多个子集来进行分类或回归。每个节点表示对一个特征的测试,分支表示测试结果,叶子节点表示最终的预测结果。

适用场景

  • 客户细分
  • 病例分类
  • 股票市场分析

优缺点

优点:

  • 易于理解和解释
  • 可以处理非线性数据

缺点:

  • 容易过拟合
  • 对数据中的小变化敏感

4. 支持向量机(Support Vector Machine, SVM)

基本原理

SVM通过找到最优超平面来将数据分类。对于线性不可分数据,可以通过核函数将数据映射到高维空间,使其线性可分。

适用场景

  • 文本分类
  • 图像识别
  • 基因数据分析

优缺点

优点:

  • 能处理高维数据
  • 有效避免过拟合

缺点:

  • 训练时间较长
  • 对于大规模数据集表现不佳

5. k-近邻算法(k-Nearest Neighbors, k-NN)

基本原理

k-NN是一种基于实例的学习方法,通过计算样本点与训练集中所有样本点的距离,选择距离最近的k个点,最终通过多数投票(分类)或平均值(回归)来预测。

适用场景

  • 图像识别
  • 手写数字识别
  • 推荐系统

优缺点

优点:

  • 实现简单
  • 无需训练过程

缺点:

  • 计算复杂度高,预测阶段速度慢
  • 对噪声和无关特征敏感

6. 朴素贝叶斯(Naive Bayes)

基本原理

朴素贝叶斯基于贝叶斯定理,并假设特征之间相互独立。通过计算每个类别的后验概率,选择概率最大的类别作为预测结果。

74da1a080d0a459483bcdd8dfa04594f.png

适用场景

  • 垃圾邮件分类
  • 文本分类
  • 医学诊断

优缺点

优点:

  • 计算效率高
  • 对小规模数据集表现良好

缺点:

  • 特征独立假设在实际中很难成立
  • 对连续特征处理较差

7. 随机森林(Random Forest)

基本原理

随机森林是一种集成学习方法,通过构建多个决策树并结合其预测结果来提高模型性能。每棵树在训练时使用不同的随机样本和特征。

适用场景

  • 银行贷款风险评估
  • 生物信息学
  • 市场预测

优缺点

优点:

  • 减少过拟合
  • 能处理高维数据

缺点:

  • 模型复杂度高,计算开销大
  • 对实时预测不友好

8. 梯度提升树(Gradient Boosting Tree, GBT)

基本原理

梯度提升树是一种通过逐步构建模型的集成方法,每个新模型都试图纠正前一个模型的错误。常见实现包括XGBoost、LightGBM等。

适用场景

  • 排序问题(如搜索引擎)
  • 销售预测
  • 信用评分

优缺点

优点:

  • 高预测精度
  • 能处理各种类型的数据

缺点:

  • 训练时间较长
  • 参数调优复杂

9. 神经网络(Neural Networks)

基本原理

神经网络模仿人脑神经元结构,通过多层感知器和反向传播算法来进行训练和预测。近年来,深度学习中的卷积神经网络(CNN)、循环神经网络(RNN)等变体在图像和自然语言处理等领域取得了巨大成功。

适用场景

  • 图像识别
  • 自然语言处理
  • 游戏 AI

优缺点

优点:

  • 高表达能力,能处理复杂非线性问题
  • 在大数据和高计算资源支持下表现优秀

缺点:

  • 训练时间长,计算资源需求高
  • 解释性差,不易理解模型内部机制

总结

监督学习方法种类繁多,各有优缺点,适用于不同类型的任务和数据。选择合适的方法需要考虑数据的特性、任务的需求以及计算资源等因素。以下是对几种常见方法的总结:

  1. 线性回归:适合简单的回归任务,但假设较强。
  2. 逻辑回归:适用于二分类任务,解释性强。
  3. 决策树:易于理解和解释,但容易过拟合。
  4. 支持向量机:适合高维数据,但计算复杂度高。
  5. k-近邻算法:实现简单,但计算开销大。
  6. 朴素贝叶斯:计算效率高,但假设较强。
  7. 随机森林:性能强大,减少过拟合,但复杂度高。
  8. 梯度提升树:高预测精度,但训练时间长。
  9. 神经网络:适合复杂任务,但计算资源需求高。

通过对这些方法的理解和应用,可以在不同的实际问题中找到最合适的解决方案,从而实现更好的预测和分类效果。

3.1.2 非监督学习

  • 定义

    • 非监督学习是一种无需已标注数据进行模型训练的方法,包括聚类和降维任务。
    • 聚类任务示例:客户细分(将客户分成不同群体)。
    • 降维任务示例:数据可视化(将高维数据转换为低维以便于可视化)。
  • 异常检测

    • 异常检测用于识别数据中的异常模式,常用方法有孤立森林(Isolation Forest)和本地离群因子(Local Outlier Factor)。

示例代码:

from sklearn.ensemble import IsolationForest
import numpy as np# 生成示例数据
X = np.array([[1, 2], [2, 3], [3, 4], [8, 8], [9, 9], [10, 10]])# 训练孤立森林模型
model = IsolationForest(contamination=0.2)
model.fit(X)# 预测
outliers = model.predict(X)
print(f"Outliers: {outliers}")

机器学习中的非监督学习方法主要用于从无标签的数据中发现隐藏的模式和结构。非监督学习算法的种类繁多,适用于不同类型的任务,如聚类、降维和异常检测。下面详细介绍几种常见的非监督学习方法,包括它们的基本原理、适用场景以及优缺点。

1. 聚类(Clustering)

聚类是一种将数据集分成多个组(簇)的技术,使得同一组内的数据点尽可能相似,而不同组的数据点尽可能不同。常见的聚类算法包括 K-means、层次聚类和 DBSCAN。

1.1 K-means 聚类

基本原理

K-means 聚类是一种迭代优化算法,通过最小化簇内距离的总和,将数据点分配到 K 个簇中。算法的步骤包括:

  1. 随机选择 K 个初始质心。
  2. 分配每个数据点到最近的质心。
  3. 重新计算每个簇的质心。
  4. 重复步骤 2 和 3,直到质心不再变化或达到最大迭代次数。

适用场景

  • 客户细分
  • 图像压缩
  • 文本聚类

优缺点

优点:

  • 简单易懂,计算效率高
  • 易于实现

缺点:

  • 需要预先指定 K 值
  • 对初始值敏感,可能陷入局部最优
  • 只能发现凸形簇

1.2 层次聚类(Hierarchical Clustering)

基本原理

层次聚类通过构建一个树状结构(树状图)来表示数据的聚类过程,分为自下而上(凝聚)和自上而下(分裂)两种方法。

适用场景

  • 基因序列分析
  • 社交网络分析
  • 市场研究

优缺点

优点:

  • 不需要预先指定簇的数量
  • 可以生成层次结构,便于理解数据关系

缺点:

  • 计算复杂度高,适用于小规模数据集
  • 对噪声和异常值敏感

1.3 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)

基本原理

DBSCAN 基于密度的聚类算法,通过寻找高密度区域中的数据点形成簇,能够识别任意形状的簇,并且对噪声数据有很好的鲁棒性。

适用场景

  • 空间数据分析
  • 图像处理
  • 社交网络分析

优缺点

优点:

  • 不需要指定簇的数量
  • 能发现任意形状的簇
  • 对噪声数据具有鲁棒性

缺点:

  • 对参数选择敏感(如 $\epsilon$ 和最小点数)
  • 对高维数据表现较差

2. 降维(Dimensionality Reduction)

降维是一种将高维数据映射到低维空间的方法,旨在减少特征数量,保持数据的主要信息。常见的降维算法包括 PCA、t-SNE 和 LDA。

2.1 主成分分析(Principal Component Analysis, PCA)

基本原理

PCA 通过线性变换将数据映射到新的坐标系中,新坐标系的轴(主成分)是数据中方差最大的方向。前几个主成分通常能够保留大部分数据的信息。

适用场景

  • 数据可视化
  • 特征提取
  • 数据压缩

优缺点

优点:

  • 降低数据维度,减少计算复杂度
  • 消除特征间的线性相关性

缺点:

  • 仅适用于线性关系的数据
  • 主成分难以解释

2.2 t-SNE(t-Distributed Stochastic Neighbor Embedding)

基本原理

t-SNE 是一种非线性降维方法,主要用于高维数据的可视化。它通过最小化高维数据和低维数据之间的概率分布差异,将相似的数据点映射到低维空间中尽可能接近的位置。

适用场景

  • 高维数据可视化
  • 图像数据降维
  • 基因数据分析

优缺点

优点:

  • 能有效处理非线性数据
  • 适合数据可视化

缺点:

  • 计算复杂度高,适用于小规模数据集
  • 结果不稳定,难以解释

2.3 线性判别分析(Linear Discriminant Analysis, LDA)

基本原理

LDA 是一种监督学习的降维方法,旨在通过最大化类间距离和最小化类内距离来找到最优投影方向,使得不同类别的数据在低维空间中更容易区分。

适用场景

  • 模式识别
  • 文本分类
  • 面部识别

优缺点

优点:

  • 适合分类任务的降维
  • 能有效提高分类性能

缺点:

  • 仅适用于线性可分的数据
  • 需要标签信息

3. 异常检测(Anomaly Detection)

异常检测是识别数据集中异常或异常行为的过程。常见的异常检测算法包括孤立森林(Isolation Forest)、局部异常因子(Local Outlier Factor, LOF)和高斯混合模型(Gaussian Mixture Model, GMM)。

3.1 孤立森林(Isolation Forest)

基本原理

孤立森林通过随机选择特征和切分点来构建树,异常点更容易被孤立(在较浅的树层级上分开),因此这些点的平均路径长度较短。

适用场景

  • 网络入侵检测
  • 信用卡欺诈检测
  • 工业设备故障检测

优缺点

优点:

  • 对大规模数据集表现良好
  • 处理高维数据效果好

缺点:

  • 对参数选择敏感

3.2 局部异常因子(Local Outlier Factor, LOF)

基本原理

LOF 通过比较数据点的局部密度与其邻居的局部密度来识别异常点。如果一个点的局部密度显著低于其邻居的局部密度,则该点被认为是异常的。

适用场景

  • 健康监测
  • 金融欺诈检测
  • 制造业质量控制

优缺点

优点:

  • 能有效识别局部异常
  • 适用于多种数据分布

缺点:

  • 计算复杂度高
  • 对参数选择敏感

3.3 高斯混合模型(Gaussian Mixture Model, GMM)

基本原理

GMM 假设数据由多个高斯分布组成,通过最大似然估计或期望最大化算法来估计模型参数。异常点是那些概率密度较低的数据点。

适用场景

  • 图像分割
  • 市场细分
  • 数据生成

优缺点

优点:

  • 能处理复杂数据分布
  • 适用于多种应用场景

缺点:

  • 对初始参数敏感
  • 可能陷入局部最优

总结

非监督学习方法主要包括聚类、降维和异常检测,每种方法都有其特定的应用场景和优缺点。以下是对几种常见方法的总结:

  1. 聚类:将数据分成多个组,使同一组内的数据点尽可能相似。

    • K-means:简单高效,但需要预先指定簇数。
    • 层次聚类:生成层次结构,但计算复杂度高。
    • DBSCAN:发现任意形状簇,对噪声有鲁棒性,但对参数敏感。
  2. 降维:将高维数据映射到低维空间,保留主要信息。

    • PCA:线性降维,减少计算复杂度,但只适用于线性关系。
    • t-SNE:非线性降维,适合可视化,但计算复杂度高。
    • LDA:监督降维,提高分类性能,但需要标签信息。
  3. 异常检测:识别数据中的异常点。

    • 孤立森林:适合大规模高维数据,但对参数敏感。
    • 局部异常因子:识别局部异常,但计算复杂度高。
    • 高斯混合模型:处理复杂分布,但对初始参数敏感。

通过对这些非监督学习方法的理解和应用,可以在无标签数据中发现有价值的模式和结构,从而解决实际问题。

3.1.3 模型训练和评估

模型训练

  • 使用训练数据训练模型,理解模型参数(模型的可学习参数)和超参数(控制学习过程的参数)。

示例代码:

from sklearn.linear_model import LinearRegression# 创建线性回归模型
model = LinearRegression()# 训练模型
model.fit(X_train, y_train)

模型评估

  • 评估模型的性能,常用指标有准确率、精确率、召回率和F1分数。

示例代码:

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score# 预测
y_pred = model.predict(X_test)# 评估模型
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
f1 = f1_score(y_test, y_pred, average='macro')print(f"Accuracy: {accuracy}")
print(f"Precision: {precision}")
print(f"Recall: {recall}")
print(f"F1 Score: {f1}")

在机器学习中,模型训练和评估是两个关键步骤。以下是对这两个步骤的详细总结,包括其各个阶段的具体内容和方法。

1. 训练过程

数据准备

数据准备是训练模型的第一步,涉及以下几个方面:

  1. 数据清洗:处理缺失值、异常值和重复数据,确保数据质量。
  2. 特征选择:从数据集中选择对预测目标最有影响的特征。
  3. 数据分割:将数据分成训练集和测试集,通常按照80-20或70-30的比例分割,以便模型训练和评估。

模型选择和训练

根据问题的类型(如分类、回归等),选择合适的机器学习模型进行训练。常见的模型包括:

  1. 线性回归:用于解决回归问题,预测连续型变量。
  2. 逻辑回归:用于二分类问题,预测类别。
  3. 决策树:通过树状结构进行分类或回归,易于解释。
  4. 随机森林:由多棵决策树组成的集成模型,具有较高的准确性和鲁棒性。
  5. 支持向量机(SVM):用于分类问题,通过寻找最优超平面分离数据。

模型训练的过程是使用训练集的数据来调整模型的参数,使其能够较好地拟合数据。

2. 模型评估

模型评估用于衡量模型在新数据上的表现,常用的方法有:

分类模型评估

  1. 准确率(Accuracy):预测正确的样本占总样本的比例。
  2. 精确率(Precision):预测为正类的样本中实际为正类的比例。
  3. 召回率(Recall):实际为正类的样本中被正确预测为正类的比例。
  4. F1-score:精确率和召回率的调和平均数,综合评估模型的性能。
  5. 混淆矩阵(Confusion Matrix):用于具体评估分类模型的表现,显示预测结果与实际结果的对比。

回归模型评估

  1. 均方误差(MSE):预测值与实际值之差的平方的平均值。
  2. 均方根误差(RMSE):均方误差的平方根,更直观地反映误差大小。
  3. 平均绝对误差(MAE):预测值与实际值之差的绝对值的平均值。
  4. 决定系数(R²):表示模型的预测值与实际值之间的拟合程度,值越接近1表示模型越好。

3. 模型优化

模型优化是提高模型性能的关键步骤,常用的方法包括:

交叉验证

通过将数据集分成多个子集,交替使用一个子集作为验证集,其余子集作为训练集,来评估模型性能。这种方法有助于避免过拟合和欠拟合,常用的是K折交叉验证。

超参数调优

超参数调优通过调整模型的超参数来找到最佳的参数组合。常见的方法有:

  1. 网格搜索(Grid Search):通过穷举搜索所有可能的参数组合,找到最佳参数。
  2. 随机搜索(Random Search):通过随机选择参数组合进行搜索,比网格搜索更高效。

4. 模型保存与加载

为了在后续使用中避免重复训练,可以将训练好的模型保存下来。常用的保存方法包括使用 joblibpickle 库。保存的模型可以在需要时加载并使用,从而提高工作效率。

总结

机器学习中的模型训练和评估包括以下几个主要步骤:

  1. 数据准备:数据清洗、特征选择和数据分割。
  2. 模型选择与训练:根据任务类型选择合适的模型并进行训练。
  3. 模型评估:使用各种评估指标衡量模型在测试集上的性能。
  4. 模型优化:通过交叉验证和超参数调优提高模型性能。
  5. 模型保存与加载:保存训练好的模型以便后续使用。

通过这些步骤,可以系统地训练和评估机器学习模型,确保其在实际应用中的表现达到预期效果。

3.2 实践机器学习模型

3.2.1 数据预处理

  • 数据标准化和归一化

    • 标准化(Standardization):将特征缩放到均值为0、标准差为1的范围。
    • 归一化(Normalization):将特征缩放到0到1的范围。

示例代码:

from sklearn.preprocessing import StandardScaler, MinMaxScaler# 标准化
scaler = StandardScaler()
X_standardized = scaler.fit_transform(X)# 归一化
scaler = MinMaxScaler()
X_normalized = scaler.fit_transform(X)

数据分割

  • 将数据分为训练集和测试集,以评估模型的泛化能力。
  • 示例代码:
    from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    

    3.2.2 简单模型实现

线性回归

  • 线性回归用于预测连续值,模型假设特征和目标之间是线性关系。

示例代码:

from sklearn.linear_model import LinearRegression# 创建线性回归模型
model = LinearRegression()# 训练模型
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")

逻辑回归

  • 逻辑回归用于分类任务,模型输出类别的概率。

示例代码:

from sklearn.linear_model import LogisticRegression# 创建逻辑回归模型
model = LogisticRegression()# 训练模型
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

决策树

  • 决策树是一种树状结构的模型,通过分裂特征来进行决策。

示例代码:

from sklearn.tree import DecisionTreeClassifier# 创建决策树模型
model = DecisionTreeClassifier()# 训练模型
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

KNN(K-最近邻)

  • KNN是一种基于实例的学习算法,通过计算样本间的距离进行分类或回归。

示例代码:

from sklearn.neighbors import KNeighborsClassifier# 创建KNN模型
model = KNeighborsClassifier(n_neighbors=3)# 训练模型
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

第四步:进阶学习

4.1 深入学习模型

4.1.1 复杂模型和算法

随机森林

  • 随机森林是一种集成学习方法,通过构建多棵决策树来提高模型的泛化能力。

示例代码:

from sklearn.ensemble import RandomForestClassifier# 创建随机森林模型
model = RandomForestClassifier(n_estimators=100)# 训练模型
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

支持向量机

  • 支持向量机是一种用于分类的模型,通过寻找最佳超平面来分割数据。

示例代码:

from sklearn.svm import SVC# 创建支持向量机模型
model = SVC(kernel='linear')# 训练模型
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

聚类算法

  • K均值聚类是一种常用的聚类算法,通过迭代优化将样本分配到k个聚类中心。

示例代码:

from sklearn.cluster import KMeans# 创建K均值聚类模型
model = KMeans(n_clusters=3)# 训练模型
model.fit(X)# 获取聚类结果
labels = model.predict(X)

神经网络

  • 神经网络用于复杂任务,具有强大的学习能力。常用的框架有Keras和TensorFlow。

示例代码(使用Keras):

from keras.models import Sequential
from keras.layers import Dense# 创建神经网络模型
model = Sequential()
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))# 编译模型
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])# 训练模型
model.fit(X_train, y_train, epochs=5, batch_size=32)# 评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Loss: {loss}, Accuracy: {accuracy}")

4.1.2 调参、交叉验证和模型优化

调参

  • 调整模型的超参数以优化模型性能。可以使用Grid Search和Random Search。

示例代码(使用Grid Search):

from sklearn.model_selection import GridSearchCV# 定义参数网格
param_grid = {'n_estimators': [50, 100, 200], 'max_depth': [None, 10, 20]}# 创建随机森林模型
model = RandomForestClassifier()# 网格搜索
grid_search = GridSearchCV(model, param_grid, cv=5)
grid_search.fit(X_train, y_train)# 最优参数
print(f"Best parameters: {grid_search.best_params_}")

交叉验证

  • 使用交叉验证评估模型,减少过拟合的风险。

示例代码:

from sklearn.model_selection import cross_val_score# 创建随机森林模型
model = RandomForestClassifier(n_estimators=100)# 交叉验证
scores = cross_val_score(model, X, y, cv=5)
print(f"Cross-validation scores: {scores}")
print(f"Mean score: {scores.mean()}")

模型优化

  • 使用正则化、特征选择和集成方法优化模型。

示例代码(Lasso正则化):

from sklearn.linear_model import Lasso# 创建Lasso回归模型
model = Lasso(alpha=0.1)# 训练模型
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")

4.2 项目实践

4.2.1 选择项目

  • 项目选择
    • 根据自己的兴趣和实际应用场景,选择一个机器学习项目进行实践。
    • 示例项目:
      • 房价预测:使用回归模型预测房价。
      • 图像分类:使用卷积神经网络分类图像。
      • 文本分类:使用自然语言处理技术分类文本。

4.2.2 数据收集和清洗

  • 数据收集

    • 从公开数据集、企业数据库或自定义数据源中收集数据。
    • 示例:
      • 使用Kaggle上的公开数据集。
      • 使用API抓取数据。
  • 数据清洗

    • 对收集到的数据进行清洗,确保数据质量。
    • 示例:
      • 处理缺失值、异常值和重复值。
      • 数据转换和标准化。
  • 特征工程

    • 进行特征选择和特征提取,确保模型能有效利用数据。
    • 示例:
      • 使用PCA进行降维。
      • 使用互信息进行特征选择。
  • 模型训练

    • 选择合适的模型,进行模型训练和优化。
    • 示例:
      • 使用随机森林进行分类。
      • 使用支持向量机进行回归。
  • 模型评估

    • 使用各种评估指标评估模型性能,确保模型的泛化能力。
    • 示例:
      • 使用混淆矩阵评估分类模型。
      • 使用均方误差评估回归模型。
  • 模型部署

    • 将训练好的模型部署到生产环境,提供实际服务。
    • 示例:
      • 使用Flask或Django构建API服务。
      • 使用Docker容器化部署。
  • 模型维护

    • 定期监控和更新模型,确保其性能和稳定性。
    • 示例:
      • 使用监控工具跟踪模型的预测结果。
      • 根据新数据定期重新训练模型。

第五步:学习资源

5.1 在线课程和文档

5.1.1 在线课程

  • Coursera

    • Andrew Ng的《机器学习》课程是入门机器学习的经典课程,涵盖了机器学习的基本概念和算法。
    • 链接:Coursera机器学习课程
  • Kaggle

    • Kaggle提供了大量的数据科学和机器学习教程,从入门到进阶,适合各种水平的学习者。
    • 链接:Kaggle教程

5.1.2 官方文档

  • Scikit-Learn

    • 阅读Scikit-Learn的官方文档,了解各个模型和方法的具体用法和参数。
    • 链接:Scikit-Learn文档
  • Pandas

    • 阅读Pandas的官方文档,掌握数据操作和分析的技巧。
    • 链接:Pandas文档

5.2 书籍推荐

5.2.1 《Python机器学习》

  • 作者:Sebastian Raschka
  • 内容概述:这本书详细介绍了机器学习的基本概念和Scikit-Learn库的使用,适合初学者和中级学习者。
  • 购买链接:Python机器学习

5.2.2 《机器学习实战》

  • 作者:Peter Harrington
  • 内容概述:这本书通过实际案例讲解了多种机器学习算法的实现和应用,适合实践导向的学习者。
  • 购买链接:机器学习实战
  • bf8e2f75f4824312b0fafc4f2f63414e.png

总结 

学习机器学习的路线可以分为几个主要步骤。首先,准备基础知识,学习Python的基本语法,包括变量、数据类型、控制流、函数和模块等。安装PyCharm并熟悉其基本功能和快捷键。接着,掌握数据科学基础,安装NumPy、Pandas、Matplotlib和Scikit-Learn等库,学习数据读取、清洗、处理及可视化技巧。然后,理解机器学习的基本概念,包括监督学习和非监督学习,掌握特征工程、模型训练和评估的方法。

在此基础上,进行数据预处理,标准化和归一化数据,分割训练集和测试集。实践简单模型,如线性回归、逻辑回归、决策树和KNN。进阶学习复杂模型和算法,包括随机森林、支持向量机和神经网络,理解调参、交叉验证和模型优化的技术。

最后,通过实际项目巩固所学知识,从数据收集、清洗、建模到部署,完成整个项目流程。选择一个感兴趣的项目,如房价预测、图像分类或文本分类,进行全面实践,并通过持续的模型维护和优化提升模型性能。通过这一系统的学习路线,你将逐步掌握机器学习的知识和技能。

相关文章:

【机器学习】在【PyCharm中的学习】:从【基础到进阶的全面指南】

目录 第一步&#xff1a;基础准备 1.1 Python基础 1.1.1 学习Python的基本语法 1.1.2 控制流 1.1.3 函数和模块 1.2 安装PyCharm 1.2.1 下载并安装 第二步&#xff1a;数据科学基础 2.1 安装必备库 2.1.1 使用pip安装 2.2 数据操作 2.2.1 Pandas基础操作 2.2.2 Nu…...

idea Error running ‘Application‘

1、Error running ‘Application’ Error running ApplicationError running Application. Command line is too long.Shorten the command line via JAR manifest or via a classpath file and rerun.找到 .idea/libraies/workspace.xml 中的 PropertiesComponent 属性&#…...

数据结构和顺序表

什么是数据结构 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 数据元素的三要素 数据结构包括三方面的内容&#xff1a;逻辑结构、存储结构、数据的运算。 逻辑结构 逻辑结构是指数据元素之间的逻辑关系&#xff0c;即从逻辑关系上描述数据。数据的逻辑结…...

【一步一步了解Java系列】:对这个系列的总结以及对缺漏内部类知识的补充

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 br />个人主页&#xff1a;Gu Gu Study专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xf…...

TCP和UDP

目录 TCPUDPTCP 传输控制协议(Transmission Control Protocol, TCP)是一种面向连接的,可靠的,基于字节流的传输层通信协议。在该层,另一个重要传输协议是用户数据包协议(UDP)。 数据在TCP层称为流Stream,数组分组称为分段Segment。相对的在IP层,数据称为Datagram, 数…...

【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行

isarsoft / yolov4-triton-tensorrt运行发现插件未注册? 【ai】tx2 nx: jetson Triton Inference Server 部署YOLOv4 【ai】tx2 nx: jetson Triton Inference Server 运行YOLOv4 对main 进行了重新构建 【ai】tx2 nx :ubuntu查找NvInfer.h 路径及哪个包、查找符号【ai】tx2…...

类与对象的创建

1.类是一种抽象的数据类型&#xff0c;他是对某一类事务整体描述/定义&#xff0c;但是并不能代表某一个具体的事物 eg&#xff1a;动物&#xff0c;植物&#xff0c;手机&#xff0c;电脑... Person类&#xff0c;Pet类&#xff0c;Car类&#xff0c;这些类都是用来描述、定义…...

基于单片机的 LED 照明灯智能调光系统设计

摘  要&#xff1a; 社会经济的不断发展&#xff0c;推动了智能化生活的进程&#xff0c;智能调光技术开始广泛应用在生活中&#xff0c;人们也逐渐提高了灯光亮灯率等的要求。基于此&#xff0c;笔者主要设计了基于单片机的 LED 照明灯智能调光系统&#xff0c;希望能够为相关…...

客户满意度调查方法有哪些

用户满意度调查作为改进用户体验工作中重要的一项活动&#xff0c;可以帮助企业深入了解客户对产品服务各方面评价。有许多企业想开展客户满意度调查&#xff0c;但是在调查方式上不清楚该用那种方式&#xff1f;另外还要考虑预算&#xff0c;民安智库&#xff08;公众满意度调…...

为什么企业应用开发,c++干不过java?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; C/C这种东西&#xff0c;根本…...

基于盲信号处理的声音分离——最小化增益的ICA算法

基于最小化增益的ICA算法的算法是依据混合信号经过盲信号分离会产生一定的噪声&#xff0c;为了使得分离后的信号与原信号的比值最小时&#xff0c;叫做增益最小。当增益越小时&#xff0c;分离后噪声越小&#xff0c;分离信号越接近原信号&#xff0c;分离算法的效果越好。这是…...

自动化代码规范检查--Sonarqube部署

参考文档 官方文档安装数据库 官方给出几种数据库: # 我们选用postgres, 拉取镜像 docker pull postgres:16.0# 创建存储卷 docker volume create postgresql-data# 运行容器 docker run -d --name sonarqube-postgres \-p 5432:5432 \-e POSTGRES_DB=sonar_DB \-e POSTGRE…...

基于uni-app与图鸟UI的移动应用模板构建研究

摘要 随着移动互联网技术的迅猛发展&#xff0c;移动端应用已成为企业展示形象、提供服务的重要窗口。本文基于uni-app框架和图鸟UI设计&#xff0c;深入探讨了如何高效构建覆盖多个领域的移动端应用模板。通过对商城、办公、投票、生活服务等多种类型模板的详细介绍&#xff…...

AI智能在Type-C领域的应用

随着科技的飞速发展&#xff0c;Type-C接口凭借其卓越的性能和广泛的应用场景&#xff0c;已成为现代电子设备中不可或缺的一部分。而AI智能技术的兴起&#xff0c;为Type-C领域带来了革命性的变革&#xff0c;推动了其功能的进一步完善和应用领域的拓展。本文将探讨AI智能在Ty…...

INS-GPS组合导航——卡尔曼滤波

系列文章目录 《SAR笔记-卫星轨道建模》 《SAR笔记-卫星轨迹&#xff08;三维建模&#xff09;》 《常用坐标系》 文章目录 前言 一、经典卡尔曼滤波 二、扩展卡尔曼滤波 三、无迹卡尔曼滤波 总结 前言 SAR成像仪器搭载于运动平台&#xff0c;平台的自定位误差将影响SAR…...

day 58 739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II

739. 每日温度 提示 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例…...

Dns被莫名篡改的问题定位(笔记)

引言&#xff1a;最近发现用户的多台机器上出现了Dns被莫名修改的问题&#xff0c;从系统事件上看并未能正常确定到是那个具体软件所为&#xff0c;现在的需求就是确定和定位哪个软件具体所为。 解决思路&#xff1a; 首先到IPv4设置页面对Dns进行设置&#xff1a;通过ProcExp…...

JVM原理(八):JVM虚拟机工具之基础故障工具

这里主要介绍监视虚拟机运行状态和进行故障处理的工具 1. jsp:虚拟机进程状况工具 jsp命令格式&#xff1a; jsp [options] [hostid] jps远程查询虚拟机进程状态 2. jstat:虚拟机统计信息监视工具 jstat命令格式&#xff1a; jstat [option vmid [interval [s|ms] [count]…...

Eureka的桥梁:服务消费者交互全解析

Eureka的桥梁&#xff1a;服务消费者交互全解析 在微服务架构中&#xff0c;服务发现是确保服务间有效通信的关键机制。Eureka&#xff0c;作为Netflix开源的服务发现框架&#xff0c;扮演着服务注册中心的角色&#xff0c;为服务消费者和服务提供者提供了一个动态的服务注册与…...

13_网络安全

目录 网络安全协议 网络安全协议 PGP协议 网络安全技术 防火墙技术 入侵检测系统 入侵防御系统 杀毒软件 蜜罐系统 计算机病毒与木马 网络安全协议 网络安全协议 物理层主要使用物理手段隔离、屏蔽物理设备等&#xff0c;其他层都是靠协议来保证传输的安全&#xff…...

C++ 中的数据类型

C规定在创建一个变量或者常量时&#xff0c;必须要指定出相应的数据类型&#xff0c;否则无法给变量分配内存. 1 整型 作用&#xff1a;整型变量表示的是整数类型的数据 C中能够表示整型的类型有以下几种方式&#xff0c;区别在于所占内存空间不同&#xff1a; 数据类型占用…...

CSS|04 复合选择器伪类选择器属性选择器美化超链接

基本选择器&#xff1a;见上篇基本选择器 复合选择器选择器1,选择器2{属性:值;} 多元素选择器&#xff0c;同时匹配选择器1和选择器2&#xff0c;多个选择器之间用逗号分隔举例&#xff1a; p,h1,h2{margin:0px;}E F{属性:值;} 后代元素选择器&#xff0c;匹配所有属于E元素后…...

探索Batch注释的奥秘:REM与::的细微差别

探索Batch注释的奥秘&#xff1a;REM与::的细微差别 在编写Batch文件时&#xff0c;注释是必不可少的部分&#xff0c;它们帮助我们理解代码的意图和逻辑。Batch脚本提供了两种添加注释的方法&#xff1a;REM命令和双冒号::。虽然它们功能相似&#xff0c;但在使用上存在一些细…...

C语言 求数列 S(n) = a + aa + aaa + …aa…a (n 个 a)的和

求数列S(n)aaaaaa…aa…a(n个a)之值&#xff0c;其中a是一个数字&#xff0c;n表示a的位数&#xff0c;n由键盘输入。例如222222222222222&#xff08;此时n5&#xff09; 这个程序读取用户输入的一个数字 a 和一个正整数 n&#xff0c;计算并输出数列 S(n) 的值。 #include …...

MysqlDump

介绍&#xff1a;mysqldump是一个常用的命令行工具&#xff0c;它用于备份或导出MySQL或MariaDB数据库中的数据。这个工具可以创建一个SQL文件&#xff0c;其中包含数据库的结构和数据&#xff0c;这样就可以在其他MySQL服务器上重新创建数据库或进行数据迁移。 基本语法&#…...

某安全公司DDoS攻击防御2024年6月报告

引言&#xff1a; 在2024年6月&#xff0c;网络空间的安全挑战汹涌澎湃。分布式拒绝服务&#xff08;DDoS&#xff09;攻击频发&#xff0c;针对云服务、金融科技及在线教育平台的精密打击凸显出当前网络威胁环境的严峻性。 某安全公司作为网络安全防护的中坚力量&#xff0c…...

Centos下rpm和yum执行卡住问题(已解决)

问题描述 执行rpm和yum卡住&#xff0c; 没有任何报错信息&#xff0c;且无法 ctrl c 终止&#xff0c;只能通过后台 kill -9 杀死。 问题排查&#xff1a; 查看yum日志&#xff1a;yum -vv 软件包 会发现卡在 loading keyring from rpmdb&#xff0c;即load DB存在问题。 …...

python自动化办公之PyPDF2.errors.DeprecationError

背景&#xff1a;pypdf2库在不断更新换代里面的类&#xff0c;逐渐淘汰一些旧的类 PyPDF2.errors.DeprecationError的意思是我们代码里用到的类计划被淘汰了&#xff0c;系统不推荐使用&#xff0c;解决办法&#xff1a;根据提示use xxx instead使用xxx 替换之前的类 例子1 P…...

[leetcode]first-unique-character-in-a-string 字符串中的第一个唯一字符

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int firstUniqChar(string s) {unordered_map<int, int> frequency;for (char ch: s) {frequency[ch];}for (int i 0; i < s.size(); i) {if (frequency[s[i]] 1) {return i;}}return -1;} };...

使用uniapp.pageScrollTo方法进行页面滚动

先看看是不是你想要的&#xff1a; 需求&#xff1a; 有个填写数据的单子在提交的时候&#xff0c;会对必填项做校验&#xff0c;如果必填项没有数据的话&#xff0c;必填项校验生效给出提示&#xff0c;并且页面滚动到第一个需要填写数据的地方。 开发&#xff1a; 因为这个…...

寒武纪实现高维向量的softmax进阶优化和库函数对比

关于寒武纪编程可以参考本人之前的文章添加链接描述,添加链接描述,添加链接描述 实验证明,axis=0和axis=-1的时候,手写softmax速度可以和库函数媲美,甚至于更甚一筹。 src/softmax.mlu #include <bang.h> #include...

我的世界服务器-高版本服务器-MC服务器-生存服务器-RPG服务器-幻世星辰

生存为主&#xff0c;RPG乐趣为辅&#xff0c;重视每位玩家的建议&#xff0c;一起打造心目中的服务器&#xff0c;与小伙伴一起探险我的世界&#xff01; 服务器版本: 1.18.2 ~ 1.20.4 Q群&#xff1a; 338238381 服务器官网: 星辰毛毛雨-Minecraft高版本生存服务器我的世界…...

倒装COB显示屏与传统SMD显示屏安装方式有哪些不同?

COB显示屏与传统SMD显示屏是商业显示领域中非常重要的两种载体&#xff0c;在前面的文章当中我们为大家阐述了倒装COB显示屏的技术特点&#xff0c;今天跟随COB显示屏厂家深圳市中品瑞科技一起来看看&#xff0c;COB显示屏的安装与传统LED显示屏的安装有哪些不同&#xff1f; 一…...

elasticsearch重置密码

0 案例背景 Elasticsearch三台集群环境&#xff0c;对外端口为6200&#xff0c;忘记elasticsearch密码&#xff0c;进行重置操作 注&#xff1a;若无特殊说明&#xff0c;三台服务器均需进行处理操作 1 停止es /rpa/bin/elasticsearch.sh stop 检查状态 ps -ef|grep elast…...

微信小程序写一个可以滚动虚拟列表(瀑布流),减少dom渲染的优化,解决内存问题。

为什么要写这个&#xff1f; 因为在写小程序的时候首页功能比较多&#xff0c;造成渲染的dom有很多&#xff0c;一直setdata跳转到其他页面或者一直滑动就会卡顿&#xff0c;白屏。官方文档上那个不适用于瀑布流。官方文档 理解 刚开始在写这个的时候&#xff0c;就在想微信…...

人工与智能系统之间的交互方式

人工与智能系统之间的交互方式 #mermaid-svg-xSsFZWak2bsyV0un {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-xSsFZWak2bsyV0un .error-icon{fill:#552222;}#mermaid-svg-xSsFZWak2bsyV0un .error-text{fill:#5522…...

【运维】如何在Ubuntu中设置一个内存守护进程来确保内存不会溢出

文章目录 前言增加守护进程1. 编写监控脚本2. 创建 systemd 服务文件3. 启动并启用服务4. 验证服务是否运行注意事项 如何修改守护进程1. 修改监控脚本2. 重新加载并重启服务3. 验证服务是否运行总结 如何设置一个日志文件来查看信息1. 修改监控脚本以记录日志方法一&#xff1…...

调用基类的纯虚函数,如何知道纯虚函数会调用哪个派生类(子类)中的实现。

在 C 中&#xff0c;调用基类的纯虚函数实际上是通过运行时多态性来决定调用哪一个派生类的实现。这种机制是通过虚函数表&#xff08;vtable&#xff09;和虚函数指针&#xff08;vptr&#xff09;实现的。下面我们来详细探讨一下这个过程。 虚函数表和虚函数指针 虚函数表&a…...

塑造卓越企业家IP:多维度视角下的策略解析

在构建和塑造企业家IP的过程中&#xff0c;我们需要从多个维度进行考量&#xff0c;以确保个人品牌能够全面、立体地展现企业家的独特魅力和价值。以下是从不同角度探讨如何做好一个企业家IP的策略。 一、从个人特质出发 深入了解自我&#xff1a;企业家需要清晰地认识到自己的…...

Rust 跨平台-Android 和鸿蒙 OS

1. 安装 rustup rustup 是 Rust 的安装和版本管理工具 $ curl --proto https --tlsv1.2 https://sh.rustup.rs -sSf | sh 该命令会安装 rusup 和最新的稳定版本的 Rust&#xff1b;包括&#xff1a; rustc Rust 编译器&#xff0c;用于将 Rust 代码编译成可执行文件或库。 ca…...

Typora导出为Word

文章目录 一、场景二、安装1、网址2、解压并验证 三、配置四、重启Typora 一、场景 在使用Typora软件编辑文档时&#xff0c;我们可能需要将其导出为Word格式文件 当然我们可以直接在菜单里进行导出操作 文件-> 导出-> Word(.docx) 如果是第一次导出word文件&#xff0…...

数据库被后台爆破如何解决?

在数字化时代&#xff0c;数据库安全成为企业与组织不容忽视的关键环节。其中&#xff0c;“后台爆破”攻击&#xff0c;即通过自动化工具尝试大量的用户名和密码组合&#xff0c;以非法获取数据库访问权限&#xff0c;是常见的安全威胁之一。本文将详细介绍如何识别、防御并解…...

php7.4源码安装dbase7.1.1扩展

安装PHP开发工具 首先&#xff0c;你需要安装PHP开发工具&#xff0c;包括php-devel&#xff08;或php7.4-devel&#xff0c;取决于你的PHP版本&#xff09;和其他编译工具。 bash sudo yum install php7.4-devel gcc make 注意&#xff1a;如果你使用的是不同的PHP版本&#…...

OkHttp的源码解读1

介绍 OkHttp 是 Square 公司开源的一款高效的 HTTP 客户端&#xff0c;用于与服务器进行 HTTP 请求和响应。它具有高效的连接池、透明的 GZIP 压缩和响应缓存等功能&#xff0c;是 Android 开发中广泛使用的网络库。 本文将详细解读 OkHttp 的源码&#xff0c;包括其主要组件…...

08:结构体

结构体 1、为什么需要结构体2、如何定义结构体3、怎么使用结构体变量3.1、赋值和初始化3.2、结构体变量的输出 1、为什么需要结构体 为了表示一些复杂的事物&#xff0c;而普通的基本类型无法满足实际要求。什么叫结构体 把一些基本类型数据组合在一起形成的一个新的数据类型&…...

喜讯!安全狗荣获“2023年网络安全技术支撑优秀单位”称号

6月6日&#xff0c;由中共厦门市委网络安全和信息化委员会办公室&#xff08;以下简称“厦门市委网信办”&#xff09;主办的2023年网络安全技术支撑优秀单位颁奖仪式在厦门成功举行。 作为国内云原生安全领导厂商&#xff0c;安全狗受邀出席此次活动。 会上&#xff0c;安全狗…...

android里面json操作

1.读取assets下面xzhd/aikit/pck.json String json = null; try { InputStream is = activity.getAssets().open(aikitPathInData+"xzhd/aikit/pck.json"); int size = is.available(); byte[] buffer = new byte…...

MATLAB的.m文件与Python的.py文件:比较与互参

simulink MATLAB的.m文件与Python的.py文件&#xff1a;比较与互参相似之处**1. 基本结构****2. 执行逻辑****3. 可读性和维护性** 差异性**1. 语法特性****2. 性能和应用****3. 开发环境** 互相学习的可能性结论 MATLAB的.m文件与Python的.py文件&#xff1a;比较与互参 在编…...

武汉星起航:自运营团队精准把握亚马逊红利,引领跨境电商新潮流

在全球化的浪潮下&#xff0c;跨境电商行业蓬勃发展&#xff0c;为众多企业带来了前所未有的机遇。武汉星起航电子商务有限公司便是其中的佼佼者&#xff0c;其自运营团队凭借对亚马逊平台的深入了解和丰富的运营经验&#xff0c;成功抓住了亚马逊的流量红利&#xff0c;为公司…...

嵌入式计算器模块实现

嵌入式计算器模块规划 计算器混合算法解析 上面我们的算法理论已经完善, 我们只用给一个混合运算式, 计算器就可以帮助我们计算出结果. 但是存在一个痛点, 每次计算算式,都要重新编译程序, 所以我们想到了, 利用单片机, 读取用户输入的按键, 组成算式, 输入给机器, 这样我们就…...

Facebook之梦:数字社交的无限可能

在当今数字化和全球化的时代&#xff0c;社交网络已经成为人们日常生活不可或缺的一部分。作为全球最大的社交平台之一&#xff0c;Facebook不仅连接了数十亿用户&#xff0c;还深刻影响了我们的社交方式、文化交流和信息传播。然而&#xff0c;Facebook所代表的不仅仅是一个网…...

【高考志愿】光学工程

目录 一、专业概述 二、专业特点 三、研究和就业方向 3.1 研究方向 3.2 就业方向 四、光学工程专业排名 高考志愿选择光学工程专业无疑是一项既具深度又富挑战性的明智之举。这个古老而充满魅力的专业&#xff0c;正逐渐崭露其在现代社会中的重要性与独特魅力。 一、专业…...

hexo博客搭建

系列文章目录 文章目录 系列文章目录前言1. 环境配置2. 打包并发布到github仓库3. 生成ssh秘钥4.vscode配置本地与远端相对路径不一致问题总结 前言 本文主要介绍了hexo博客怎么搭建 1. 环境配置 安装git、nodejs、npm创建博客文件夹blogcmd输入命令npm install -g hexo初始化…...

【CT】LeetCode手撕—19. 删除链表的倒数第 N 个结点

题目 原题连接&#xff1a;19. 删除链表的倒数第 N 个结点 1- 思路 模式识别&#xff1a;删除倒数第 n 个结点 ——> 定义 dummyHead 并用双指针实现删除逻辑 2- 实现 ⭐19. 删除链表的倒数第 N 个结点——题解思路 class Solution {public ListNode removeNthFromEnd(Li…...

STM32 HAL库里 串口中断回调函数是在怎么被调用的?

跟着正点原子学习的HAL库写串口接收程序的时候一直有困惑&#xff0c;使用HAL_UART_Receive_IT开启接收中断后&#xff0c;为啥处理函数要写在HAL_UART_RxCpltCallback里&#xff0c;中断发生的时候是怎么到这个回调函数里去的&#xff1f; void MX_USART1_UART_Init(void) {h…...

《HelloGitHub》第 99 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…...

岚图借势东风整合产能,全新SUV上市就要交付!

,岚图旗下的全新纯电SUV将在东风日产云峰工厂生产。该工厂此前主要生产纯电动车型Ariya。据了解,岚图这款纯电SUV车型定位家用,将搭载109kWh高能量密度电池包,最大续航里程901km。根据此前工信部披露的产品公告,这款新车或命名为岚图知音。此次,东风日产给岚图新车“代工…...

相差8000元!全新凯美瑞买燃油版,还是混动版?

前不久,广汽丰田全新凯美瑞正式上市,新车共有9款配置,分为2.0L燃油版和2.0L混动版,售价从17.18-20.68万元。全新凯美瑞在搭载2.0L混合动力总成后,售价方面有了大幅度的下调,17.98万元起步,顶配20.68万元,确实很有诚意。本期话题,我们就以凯美瑞入门的精英版两款车型来…...

深圳建设“超充之城”提速

五分钟的时间可以做什么?也许只是白领喝一杯咖啡的时间,但在深圳,能给新能源汽车续航200公里。在深圳的超充站,“一杯咖啡,满电出发”的标语十分醒目。深圳随处可见的超充标语近日,记者从深圳市发展改革委获悉,截至5月17日,深圳累计建成超充站378座。深圳“超充之城”建…...

Flutter 中的 Viewport 小部件:全面指南

Flutter 中的 Viewport 小部件&#xff1a;全面指南 Flutter 是一个现代的移动和 web 应用开发框架&#xff0c;它允许开发者以一种非常直观和高效的方式构建用户界面。在 Flutter 中&#xff0c;Viewport 是一个非常重要的小部件&#xff0c;它提供了一个滚动视口&#xff0c…...

低代码开发难吗?

在软件开发的多样化浪潮中&#xff0c;低代码开发平台以其简化的编程模型&#xff0c;为IT行业带来了新的活力。作为一位资深的IT技术员&#xff0c;我对低代码开发平台的易用性和强大功能有着深刻的认识。今天&#xff0c;我将分享我对YDUIbuilder这一免费开源低代码平台的使用…...

eNSP学习——OSPF被动接口配置

目录 相关命令 1、配置接口IP地址 2、配置OSPF进程号、区域号以及网段宣告 3、配置被动接口 4、查看OSPF的邻居关系状态以及路由条目 原理概述 实验目的 实验步骤 实验内容 实验编址 具体步骤 1、基本配置 测试结果(仅提供一个) 2、搭建OSPF网络 3、配置被动接口…...