赞
踩
目录
专栏:机器学习笔记
pycharm专业版免费激活教程见资源,私信我给你发
变量和数据类型:
示例代码:
- a = 10 # 整数
- b = 3.14 # 浮点数
- c = "Hello, Python!" # 字符串
- d = True # 布尔值
- e = None # 空值
条件语句:
掌握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循环
- for i in range(5):
- print(i)
-
- # while循环
- count = 0
- while count < 5:
- print(count)
- count += 1
函数:
示例代码:
- def greet(name):
- return f"Hello, {name}!"
-
- print(greet("Alice"))
模块:
示例代码:
- import math
-
- print(math.sqrt(16))
Shift + F10
Shift + F9
Ctrl + Shift + N
Ctrl + N
Shift + F6
安装NumPy:
pip install numpy
安装Pandas:
pip install pandas
安装Matplotlib:
pip install matplotlib
安装Scikit-Learn:
pip install scikit-learn
读取数据:
- 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()
数组创建:
- 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
定义:
特征工程:
示例代码:
- 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)
基本原理
线性回归是最简单的监督学习算法之一,主要用于解决回归问题。其基本思想是通过拟合一条直线来预测因变量(目标变量)与自变量(特征变量)之间的关系。
适用场景
优缺点
优点:
缺点:
2. 逻辑回归(Logistic Regression)
基本原理
逻辑回归用于解决二分类问题,其输出是一个概率值,表示样本属于某一类的概率。模型使用sigmoid函数将线性回归的结果映射到(0,1)区间。
适用场景
优缺点
优点:
缺点:
3. 决策树(Decision Tree)
基本原理
决策树通过递归地将数据分成多个子集来进行分类或回归。每个节点表示对一个特征的测试,分支表示测试结果,叶子节点表示最终的预测结果。
适用场景
优缺点
优点:
缺点:
4. 支持向量机(Support Vector Machine, SVM)
基本原理
SVM通过找到最优超平面来将数据分类。对于线性不可分数据,可以通过核函数将数据映射到高维空间,使其线性可分。
适用场景
优缺点
优点:
缺点:
5. k-近邻算法(k-Nearest Neighbors, k-NN)
基本原理
k-NN是一种基于实例的学习方法,通过计算样本点与训练集中所有样本点的距离,选择距离最近的k个点,最终通过多数投票(分类)或平均值(回归)来预测。
适用场景
优缺点
优点:
缺点:
6. 朴素贝叶斯(Naive Bayes)
基本原理
朴素贝叶斯基于贝叶斯定理,并假设特征之间相互独立。通过计算每个类别的后验概率,选择概率最大的类别作为预测结果。
适用场景
优缺点
优点:
缺点:
7. 随机森林(Random Forest)
基本原理
随机森林是一种集成学习方法,通过构建多个决策树并结合其预测结果来提高模型性能。每棵树在训练时使用不同的随机样本和特征。
适用场景
优缺点
优点:
缺点:
8. 梯度提升树(Gradient Boosting Tree, GBT)
基本原理
梯度提升树是一种通过逐步构建模型的集成方法,每个新模型都试图纠正前一个模型的错误。常见实现包括XGBoost、LightGBM等。
适用场景
优缺点
优点:
缺点:
9. 神经网络(Neural Networks)
基本原理
神经网络模仿人脑神经元结构,通过多层感知器和反向传播算法来进行训练和预测。近年来,深度学习中的卷积神经网络(CNN)、循环神经网络(RNN)等变体在图像和自然语言处理等领域取得了巨大成功。
适用场景
优缺点
优点:
缺点:
总结
监督学习方法种类繁多,各有优缺点,适用于不同类型的任务和数据。选择合适的方法需要考虑数据的特性、任务的需求以及计算资源等因素。以下是对几种常见方法的总结:
通过对这些方法的理解和应用,可以在不同的实际问题中找到最合适的解决方案,从而实现更好的预测和分类效果。
定义:
异常检测:
示例代码:
- 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.2 层次聚类(Hierarchical Clustering)
基本原理
层次聚类通过构建一个树状结构(树状图)来表示数据的聚类过程,分为自下而上(凝聚)和自上而下(分裂)两种方法。
适用场景
优缺点
优点:
缺点:
1.3 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)
基本原理
DBSCAN 基于密度的聚类算法,通过寻找高密度区域中的数据点形成簇,能够识别任意形状的簇,并且对噪声数据有很好的鲁棒性。
适用场景
优缺点
优点:
缺点:
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 假设数据由多个高斯分布组成,通过最大似然估计或期望最大化算法来估计模型参数。异常点是那些概率密度较低的数据点。
适用场景
优缺点
优点:
缺点:
总结
非监督学习方法主要包括聚类、降维和异常检测,每种方法都有其特定的应用场景和优缺点。以下是对几种常见方法的总结:
聚类:将数据分成多个组,使同一组内的数据点尽可能相似。
降维:将高维数据映射到低维空间,保留主要信息。
异常检测:识别数据中的异常点。
通过对这些非监督学习方法的理解和应用,可以在无标签数据中发现有价值的模式和结构,从而解决实际问题。
模型训练:
示例代码:
- from sklearn.linear_model import LinearRegression
-
- # 创建线性回归模型
- model = LinearRegression()
-
- # 训练模型
- model.fit(X_train, y_train)
模型评估:
示例代码:
- 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. 训练过程
数据准备
数据准备是训练模型的第一步,涉及以下几个方面:
模型选择和训练
根据问题的类型(如分类、回归等),选择合适的机器学习模型进行训练。常见的模型包括:
模型训练的过程是使用训练集的数据来调整模型的参数,使其能够较好地拟合数据。
2. 模型评估
模型评估用于衡量模型在新数据上的表现,常用的方法有:
分类模型评估
回归模型评估
3. 模型优化
模型优化是提高模型性能的关键步骤,常用的方法包括:
交叉验证
通过将数据集分成多个子集,交替使用一个子集作为验证集,其余子集作为训练集,来评估模型性能。这种方法有助于避免过拟合和欠拟合,常用的是K折交叉验证。
超参数调优
超参数调优通过调整模型的超参数来找到最佳的参数组合。常见的方法有:
4. 模型保存与加载
为了在后续使用中避免重复训练,可以将训练好的模型保存下来。常用的保存方法包括使用 joblib
或 pickle
库。保存的模型可以在需要时加载并使用,从而提高工作效率。
总结
机器学习中的模型训练和评估包括以下几个主要步骤:
通过这些步骤,可以系统地训练和评估机器学习模型,确保其在实际应用中的表现达到预期效果。
数据标准化和归一化:
示例代码:
- 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_split
-
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
线性回归:
示例代码:
- 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-最近邻):
示例代码:
- 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}")
随机森林:
示例代码:
- 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}")
聚类算法:
示例代码:
- from sklearn.cluster import KMeans
-
- # 创建K均值聚类模型
- model = KMeans(n_clusters=3)
-
- # 训练模型
- model.fit(X)
-
- # 获取聚类结果
- labels = model.predict(X)
神经网络:
示例代码(使用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}")

调参:
示例代码(使用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}")
数据收集:
数据清洗:
特征工程:
模型训练:
模型评估:
模型部署:
模型维护:
Coursera:
Kaggle:
Scikit-Learn:
Pandas:
学习机器学习的路线可以分为几个主要步骤。首先,准备基础知识,学习Python的基本语法,包括变量、数据类型、控制流、函数和模块等。安装PyCharm并熟悉其基本功能和快捷键。接着,掌握数据科学基础,安装NumPy、Pandas、Matplotlib和Scikit-Learn等库,学习数据读取、清洗、处理及可视化技巧。然后,理解机器学习的基本概念,包括监督学习和非监督学习,掌握特征工程、模型训练和评估的方法。
在此基础上,进行数据预处理,标准化和归一化数据,分割训练集和测试集。实践简单模型,如线性回归、逻辑回归、决策树和KNN。进阶学习复杂模型和算法,包括随机森林、支持向量机和神经网络,理解调参、交叉验证和模型优化的技术。
最后,通过实际项目巩固所学知识,从数据收集、清洗、建模到部署,完成整个项目流程。选择一个感兴趣的项目,如房价预测、图像分类或文本分类,进行全面实践,并通过持续的模型维护和优化提升模型性能。通过这一系统的学习路线,你将逐步掌握机器学习的知识和技能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。