Python编程学习--50个最常用的Python数据科学核心库!


包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】!

在这里插入图片描述

1.导入常用数据科学库

  • 在Python中,数据科学的核心操作通常依赖几个库,包括NumPy(数值计算)、Pandas(数据操作)、Matplotlib和Seaborn(数据可视化)、以及Scikit-learn(机器学习)。这些库为分析和建模提供了强大的工具。
语法
import numpy as np          # 数值计算   
import pandas as pd         # 数据操作   
import matplotlib.pyplot as plt  # 数据可视化   
import seaborn as sns       # 高级数据可视化   
from sklearn.model_selection 
import train_test_split  # 数据划分   
  • NumPy:提供多维数组对象ndarray,高效处理大规模矩阵运算。
  • Pandas:基于NumPy构建,使用DataFrameSeries方便地处理结构化数据。
  • Matplotlib/Seaborn:帮助绘制数据分布、趋势图。
  • Scikit-learn:封装了大量的机器学习算法,简化了模型训练和评估。
示例代码
# 导入核心库   
import numpy as np   
import pandas as pd   
import matplotlib.pyplot as plt   
import seaborn as sns   
from sklearn.model_selection 
import train_test_split      # 确认版本号   
print("NumPy version:", np.__version__)   
print("Pandas version:", pd.__version__)   
print("Matplotlib version:", plt.__version__)   

2.加载CSV文件

  • 加载CSV文件是数据分析的第一步。CSV(逗号分隔值)是一种常用的表格数据存储格式,适合大多数数据处理任务。
语法
df = pd.read_csv(filepath, sep=',', header=0)   
  • filepath:文件路径,可以是本地路径或在线URL。
  • sep:分隔符,默认为,。
  • header:指定标题行的位置,默认是第0行。
  • pd.read_csv()读取文件内容,并将其存储为Pandas的DataFrame,这种结构类似于Excel表格,行列结构化存储,支持索引和多种操作。
示例代码
# 示例CSV文件路径   
csv_path = 'data/sample.csv'      # 加载CSV数据   
df = pd.read_csv(csv_path)      # 查看前五行   
print(df.head())      # 检查数据维度   
print("Shape of the dataset:", df.shape)   

3.查看数据基本信息

  • 在加载数据后,通常需要检查其基本信息,比如数据规模、列类型、缺失值情况等。
语法
df.info()        # 查看数据基本信息   
df.describe()    # 生成数据的统计摘要   
  • info()提供每列数据类型、非空值计数和内存使用情况。
  • describe()针对数值列,生成统计信息:均值、标准差、最小值、最大值和四分位数。
示例代码
# 基本信息   
print("Data Info:")   
print(df.info())      # 数值列统计信息   
print("\nData Statistics:")   
print(df.describe())   

4.检查缺失值

  • 缺失值的处理是数据清洗的重要环节,尤其在机器学习中,缺失值可能影响模型的性能。
语法
df.isnull().sum()   # 按列统计缺失值   
  • isnull()返回布尔型DataFrame,缺失值为True。
  • sum()计算每列缺失值的总数。
示例代码
# 检查每列的缺失值数量   
missing_values = df.isnull().sum()   
print("Missing Values:")   
print(missing_values)      # 检查是否有任何缺失值   
print("\nAny missing values:", df.isnull().any().any())   

5.数据可视化:绘制散点图

  • 散点图是探索两变量关系的常用工具。通过散点图可以观察变量之间的相关性、分布等信息。
语法
sns.scatterplot(x='feature1', y='feature2', data=df)   
  • Seaborn 提供高级绘图库,scatterplot用于绘制带有样式增强的散点图。
  • 可通过 hue和 size 参数表示额外维度。
示例代码
# 示例数据   
df = pd.DataFrame({'Age': [25, 30, 35, 40, 45],'Salary': [50000, 60000, 75000, 80000, 100000]})      
# 散点图   
plt.figure(figsize=(8, 6))   
sns.scatterplot(x='Age', y='Salary', data=df, color='blue')   
plt.title("Age vs Salary")   
plt.xlabel("Age")   
plt.ylabel("Salary")   
plt.show()   

6.数据分组与聚合

  • 对数据分组后进行汇总计算(如求和、均值等),可帮助提取有意义的统计特征。
语法
df.groupby('group_column')['value_column'].agg('mean')   
  • groupby()按列分组数据。
  • agg()对分组后的数据应用汇总函数,如 mean, sum, count
示例代码
# 示例数据   
df = pd.DataFrame({'Department': ['HR', 'HR', 'IT', 'IT', 'Finance', 'Finance'],'Salary':
 [3000, 4000, 5000, 6000, 7000, 8000]})      # 按部门计算平均薪资   
 avg_salary = df.groupby('Department')['Salary'].mean()   
 print("Average Salary by Department:")   
 print(avg_salary)   

7.数据划分:训练集和测试集

  • 将数据划分为训练集和测试集是机器学习的基本步骤,用于评估模型在未知数据上的表现。
语法
train_test_split(X, y, test_size=0.2, random_state=42)   
  • X是特征矩阵,y是目标变量。
  • test_size决定测试集占比,random_state 保证结果可复现。
示例代码
from sklearn.model_selection 
import train_test_split      # 示例数据   
X = np.array([[1], [2], [3], [4], [5]])   
y = np.array([1, 0, 1, 0, 1])      # 数据划分   
X_train, X_test, y_train, y_test = 
train_test_split(X, y, test_size=0.2, random_state=42)      # 打印结果  
print("Training Features:", X_train)   
print("Training Labels:", y_train)   
print("Testing Features:", X_test)   
print("Testing Labels:", y_test)   

8.缺失值填充

  • 缺失值填充是数据预处理中的重要步骤,常见填充策略包括用均值、中位数、众数或固定值替换缺失值。
语法
df['column'].fillna(value, inplace=True)   
  • value 可以是具体的值、均值、或函数输出。
  • inplace=True 会直接修改原DataFrame。
  • fillna() 用于填充NaN值,是一种避免因缺失值影响分析和建模的有效方法。
示例代码
# 示例数据   
df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie'],'Age': 
[25, np.nan, 30],'Salary': [50000, 60000, np.nan]})      # 用均值填充缺失值   
df['Age'].fillna(df['Age'].mean(), inplace=True)   
df['Salary'].fillna(0, inplace=True)      
print("Data after filling missing values:")   
print(df)   

9.数据标准化

  • 标准化是将数据按特定尺度调整,通常使均值为0,标准差为1,有助于模型快速收敛。
语法
from sklearn.preprocessing 
import StandardScaler   
scaler = StandardScaler()   
scaled_data = scaler.fit_transform(data)   
  • 标准化通过公式 ((x - \mu) / \sigma) 转换数据,使数据在相似尺度上,有助于处理含多种量纲的特征。
示例代码
from sklearn.preprocessing 
import StandardScaler      # 示例数据   
data = np.array([[1, 2], [3, 4], [5, 6]])      # 标准化   
scaler = StandardScaler()   
scaled_data = scaler.fit_transform(data)      
print("Original Data:\n", data)   
print("Standardized Data:\n", scaled_data)   

10.数据归一化

  • 归一化是将数据缩放到特定范围(通常为[0, 1]),适合某些算法如KNN或神经网络。
语法
from sklearn.preprocessing 
import MinMaxScaler   
scaler = MinMaxScaler()   
normalized_data = scaler.fit_transform(data)   
  • 通过公式 ((x - x_{min}) / (x_{max} - x_{min})) 将数据映射到指定区间。
示例代码
from sklearn.preprocessing 
import MinMaxScaler      # 示例数据   
data = np.array([[1, 2], [3, 4], [5, 6]])      # 归一化   
scaler = MinMaxScaler()   
normalized_data = scaler.fit_transform(data)      
print("Original Data:\n", data)   
print("Normalized Data:\n", normalized_data)   

11.数据去重

  • 在实际数据中可能存在重复的记录,通过去重操作可以清理冗余信息。
语法
df.drop_duplicates(inplace=True)   
  • Pandas 的 drop_duplicates() 方法检查重复行,并根据需要删除。
示例代码
# 示例数据   
df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Alice'],'Age': [25, 30, 25]})      # 去重   
df.drop_duplicates(inplace=True)      
print("Data after removing duplicates:")   
print(df)   

12.数据透视表

  • 数据透视表用于多维汇总分析,类似Excel中的透视表操作。
语法
pd.pivot_table(df, values='value_column', index='index_column', columns='column', aggfunc='mean')   
  • 透视表可通过指定index(行)、columns(列)和aggfunc(聚合函数)重新组织数据。
示例代码
# 示例数据   
df = pd.DataFrame({'Department': ['HR', 'HR', 'IT', 'IT', 'Finance', 'Finance'],
'Year': [2021, 2022, 2021, 2022, 2021, 2022],       
'Salary': [3000, 4000, 5000, 6000, 7000, 8000]})      # 创建透视表   
pivot_table = pd.pivot_table(df, values='Salary', 
index='Department', columns='Year', aggfunc='mean')      
print("Pivot Table:")   
print(pivot_table)   

13.数据连接(合并)

  • 将多个数据表按行或列合并,常用于拼接多个来源的数据集。
语法
pd.concat([df1, df2], axis=0)  # 按行合并   
pd.merge(df1, df2, on='key')  # 按键合并   
  • concat 沿指定轴拼接数据。
  • merge 类似SQL中的JOIN操作,按键值对合并。
示例代码
# 示例数据   
df1 = pd.DataFrame({'ID': [1, 2], 'Name': ['Alice', 'Bob']})   
df2 = pd.DataFrame({'ID': [1, 2], 'Salary': [5000, 6000]})      # 合并   
merged_df = pd.merge(df1, df2, on='ID')      
print("Merged DataFrame:")   
print(merged_df)   

14.热力图

  • 热力图用于可视化相关矩阵或其他二维数据,以颜色反映数据值大小。
语法
sns.heatmap(data, annot=True, cmap='coolwarm')   
  • 热力图通过颜色渐变直观展示矩阵中各值的大小关系。
  • 常用于展示变量间相关性。
示例代码
import seaborn as sns   
import matplotlib.pyplot as plt      # 示例相关矩阵   
correlation_matrix = np.array([[1, 0.8, 0.6],[0.8, 1, 0.5],[0.6, 0.5, 1]])      # 绘制热力图   
plt.figure(figsize=(8, 6))   
sns.heatmap(correlation_matrix, annot=True, 
cmap='coolwarm', xticklabels=['A', 'B', 'C'], yticklabels=['A', 'B', 'C'])   
plt.title("Correlation Heatmap")   
plt.show()   

15.特征选择

  • 特征选择通过分析变量的重要性筛选出对目标变量有显著影响的特征。
语法
from sklearn.feature_selection 
import SelectKBest, f_classif   
selector = SelectKBest(score_func=f_classif, k=5)   
X_new = selector.fit_transform(X, y)   
  • 通过统计检验(如方差分析、卡方检验等)选出评分最高的特征。
  • 可提高模型性能并减少过拟合风险。
示例代码
from sklearn.feature_selection 
import SelectKBest, f_classif   
import numpy as np      # 示例数据   
X = np.random.rand(10, 8)   
y = np.random.randint(0, 2, 10)      # 选择最佳特征   
selector = SelectKBest(score_func=f_classif, k=3)   
X_new = selector.fit_transform(X, y)      
print("Original Features Shape:", X.shape)   
print("Selected Features Shape:", X_new.shape)   

16.数据拆分:时间序列数据

  • 时间序列数据通常按时间顺序分割,不能像随机数据那样打乱。使用滚动时间窗口是常见做法。
语法
train = data[:split_point]  
test = data[split_point:]   
  • 时间序列建模需保证训练集始终在测试集之前,避免数据泄漏。时间窗口滑动用于构建验证集。
示例代码
# 示例时间序列数据   
import pandas as pd   data = pd.Series([100, 200, 300, 400, 500, 600],                     
index=pd.date_range(start='2023-01-01', periods=6, freq='D'))      # 数据拆分   
split_point = 4   
train = data[:split_point]   
test = data[split_point:]      
print("Training Data:")   
print(train)   
print("\nTesting Data:")   
print(test)   

17.哑变量(One-Hot Encoding)

  • 将分类数据转换为二进制特征的形式,适用于大多数机器学习算法。
语法
pd.get_dummies(df['categorical_column'], prefix='prefix')   
  • 通过增加二进制列表示每个类别,避免模型误认为分类变量具有大小顺序。
示例代码
# 示例数据   
df = pd.DataFrame({'City': ['New York', 'Paris', 'Tokyo']})      # 哑变量转换   
encoded = pd.get_dummies(df['City'], prefix='City')      
print("Original Data:")   
print(df)   
print("\nOne-Hot Encoded Data:")   
print(encoded)   

18.特征工程:多项式特征

  • 通过生成特征的高次项或交互项扩展特征空间,适用于线性模型拟合非线性关系。
语法
from sklearn.preprocessing 
import PolynomialFeatures   
poly = PolynomialFeatures(degree=2, include_bias=False)   
X_poly = poly.fit_transform(X)   
  • 多项式特征允许模型学习更复杂的关系,但可能引入多重共线性风险。
示例代码
from sklearn.preprocessing 
import PolynomialFeatures   
import numpy as np      # 示例数据   
X = np.array([[2], [3], [4]])      # 生成多项式特征   
poly = PolynomialFeatures(degree=2, include_bias=False)   
X_poly = poly.fit_transform(X)      
print("Original Features:")   
print(X)   
print("\nPolynomial Features:")   
print(X_poly)   

19.特征缩放:标准化与归一化

  • 将数据缩放到统一的范围,减少特征量纲差异对模型的影响。
语法
标准化:
from sklearn.preprocessing 
import StandardScaler   
scaler = StandardScaler()   
scaled_data = scaler.fit_transform(data)   
归一化:
from sklearn.preprocessing 
import MinMaxScaler   
scaler = MinMaxScaler()   
normalized_data = scaler.fit_transform(data)   
  • 标准化:调整数据到均值为0、标准差为1。
  • 归一化:将数据缩放到指定区间(如[0,1])。
示例代码
from sklearn.preprocessing 
import StandardScaler, MinMaxScaler   
import numpy as np      # 示例数据   
data = np.array([[1, 2], [3, 4], [5, 6]])      # 标准化   
scaler_std = StandardScaler()   
data_standardized = scaler_std.fit_transform(data)      # 归一化   
scaler_minmax = MinMaxScaler()   
data_normalized = scaler_minmax.fit_transform(data)      
print("Standardized Data:\n", data_standardized)   
print("\nNormalized Data:\n", data_normalized)   

20.数据降维:PCA(主成分分析)

  • PCA是一种无监督学习方法,通过线性变换将高维数据投影到低维空间,同时尽可能保留数据的方差。
语法
from sklearn.decomposition 
import PCA   
pca = PCA(n_components=2)   
X_pca = pca.fit_transform(X)   
  • 通过计算特征协方差矩阵的特征向量,找出数据方差最大的方向,并将数据投影到这些方向。
示例代码
from sklearn.decomposition 
import PCA   
import numpy as np      # 示例数据   
X = np.array([[2.5, 2.4],[0.5, 0.7],[2.2, 2.9],[1.9, 2.2],[3.1, 3.0]])      # 主成分分析降维   
pca = PCA(n_components=1)   
X_pca = pca.fit_transform(X)      
print("Original Data Shape:", X.shape)   
print("Reduced Data Shape:", X_pca.shape)   

21.数据建模:线性回归

  • 线性回归是一种最简单的监督学习算法,拟合特征与目标变量之间的线性关系。
语法
from sklearn.linear_model 
import LinearRegression   
model = LinearRegression()   
model.fit(X_train, y_train)   
predictions = model.predict(X_test)   
  • 线性回归通过最小化残差平方和,找到一组最佳线性权重。
示例代码
from sklearn.linear_model 
import LinearRegression   
import numpy as np      # 示例数据   
X = np.array([[1], [2], [3], [4]])   
y = np.array([2.5, 3.5, 5.0, 6.0])      # 模型训练   
model = LinearRegression()   
model.fit(X, y)      # 预测   
X_test = np.array([[5]])   
prediction = model.predict(X_test)      
print("Predicted Value for X=5:", prediction)   

22.数据建模:决策树

  • 决策树通过构建基于特征分裂的树状结构,适用于分类和回归任务。
语法
from sklearn.tree 
import DecisionTreeClassifier   
model = DecisionTreeClassifier(max_depth=3)   
model.fit(X_train, y_train)   
  • 决策树使用信息增益或基尼系数作为分裂准则,递归地划分特征空间。
示例代码
from sklearn.tree 
import DecisionTreeClassifier   
import numpy as np      # 示例数据   
X = np.array([[1], [2], [3], [4]])   
y = np.array([0, 0, 1, 1])      # 模型训练   
model = DecisionTreeClassifier(max_depth=2)   
model.fit(X, y)      # 预测   
prediction = model.predict([[2.5]])   
print("Predicted Class for X=2.5:", prediction)   

23.模型评估:交叉验证

  • 交叉验证用于评估模型的泛化性能,常见的是k折交叉验证。
语法
from sklearn.model_selection 
import cross_val_score   
scores = cross_val_score(model, X, y, cv=5)   
  • 将数据划分为k个子集,每次使用一个子集作为验证集,其余子集作为训练集,计算模型的平均性能。
示例代码
from sklearn.model_selection 
import cross_val_score   
from sklearn.linear_model 
import LogisticRegression   
import numpy as np      # 示例数据   
X = np.random.rand(100, 3)   
y = np.random.randint(0, 2, 100)      # 模型训练与交叉验证   
model = LogisticRegression()   
scores = cross_val_score(model, X, y, cv=5)      
print("Cross-Validation Scores:", scores)   
print("Mean Score:", scores.mean())   

24.模型调优:网格搜索

  • 网格搜索是超参数调优的一种方法,通过穷举所有可能的参数组合找到最优参数。
语法
from sklearn.model_selection
import GridSearchCV   
grid = GridSearchCV(model, param_grid, cv=5)   
grid.fit(X_train, y_train)   
  • 遍历参数网格中每个组合,通过交叉验证评估模型性能,并选取表现最优的参数。
示例代码
from sklearn.model_selection 
import GridSearchCV   
from sklearn.svm import SVC      # 示例数据  
X = [[1, 2], [2, 3], [3, 4], [4, 5]]   
y = [0, 1, 0, 1]      # 模型与参数网格   
model = SVC()   
param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}      # 网格搜索   
grid = GridSearchCV(model, param_grid, cv=3)   
grid.fit(X, y)      
print("Best Parameters:", grid.best_params_)   
print("Best Score:", grid.best_score_)   

25.模型调优:随机搜索

  • 随机搜索是超参数调优的另一种方法,通过随机选择参数组合进行评估,比网格搜索更高效。
语法
from sklearn.model_selection 
import RandomizedSearchCV   
search = RandomizedSearchCV(model, param_distributions, n_iter=10, cv=5)   
search.fit(X_train, y_train)   
  • 通过设定参数分布,从中随机采样一定数量的参数组合,进行交叉验证并选出最优参数。
示例代码
from sklearn.model_selection 
import RandomizedSearchCV   
from sklearn.ensemble 
import RandomForestClassifier      # 示例数据   
X = [[1, 2], [2, 3], [3, 4], [4, 5]]   
y = [0, 1, 0, 1]      # 模型与参数分布   
model = RandomForestClassifier()   
param_distributions = {'n_estimators': [10, 50, 100], 'max_depth': [None, 10, 20]}      # 随机搜索   
search = RandomizedSearchCV(model, param_distributions, n_iter=5, cv=3)   
search.fit(X, y)      
print("Best Parameters:", search.best_params_)   
print("Best Score:", search.best_score_)   

26.集成方法:随机森林

  • 随机森林是基于决策树的集成方法,通过随机采样和特征选择构建多棵树并取平均结果,减少过拟合。
语法
from sklearn.ensemble 
import RandomForestClassifier   
model = RandomForestClassifier(n_estimators=100)   
model.fit(X_train, y_train)   
  • 随机森林通过“袋装法”(bagging)采样数据,构建多个决策树,并通过多数投票或平均预测输出结果。
示例代码
from sklearn.ensemble 
import RandomForestClassifier   
import numpy as np      # 示例数据   
X = np.random.rand(100, 4)   
y = np.random.randint(0, 2, 100)      # 模型训练   
model = RandomForestClassifier(n_estimators=10, max_depth=5)   
model.fit(X, y)      # 预测   
X_test = np.random.rand(5, 4)   
predictions = model.predict(X_test)      
print("Predictions:", predictions)   

27.集成方法:XGBoost

  • XGBoost是一种梯度提升树(GBT)算法的优化实现,具有速度快、效果好等优点。
语法
from xgboost 
import XGBClassifier  
model = XGBClassifier(n_estimators=100)   
model.fit(X_train, y_train)   
  • 通过逐步建立决策树,每棵树学习前一棵树的残差,XGBoost还加入了正则化项,控制模型复杂度。
示例代码
from xgboost 
import XGBClassifier   
import numpy as np      # 示例数据   
X = np.random.rand(100, 5)   
y = np.random.randint(0, 2, 100)      # 模型训练   
model = XGBClassifier(n_estimators=50, max_depth=3)   
model.fit(X, y)      # 预测   
X_test = np.random.rand(5, 5)   
predictions = model.predict(X_test)      
print("Predictions:", predictions)   

28.模型评估:混淆矩阵

  • 混淆矩阵是分类模型性能评估的工具,展示预测结果的正确与错误分类数量。
语法
from sklearn.metrics 
import confusion_matrix   
matrix = confusion_matrix(y_true, y_pred)   
混淆矩阵由四个值组成:
  • TP(真正例)、FP(假正例)
  • FN(假反例)、TN(真反例)
示例代码
from sklearn.metrics 
import confusion_matrix      # 示例数据   
y_true = [0, 1, 0, 1, 0, 1]   
y_pred = [0, 1, 0, 0, 1, 1]      # 混淆矩阵   
matrix = confusion_matrix(y_true, y_pred)      
print("Confusion Matrix:")   
print(matrix)   

29.模型评估:ROC曲线与AUC

  • ROC曲线展示了分类模型的真阳性率(TPR)与假阳性率(FPR)的关系,AUC表示曲线下面积,衡量模型性能。
语法
from sklearn.metrics 
import roc_curve, roc_auc_score   
fpr, tpr, thresholds = roc_curve(y_true, y_scores)   
auc = roc_auc_score(y_true, y_scores)   
  • 通过调整分类阈值,计算不同阈值下的TPR与FPR,从而绘制ROC曲线,AUC越接近1,模型性能越好。
示例代码
from sklearn.metrics 
import roc_curve, roc_auc_score   
import matplotlib.pyplot as plt      # 示例数据   
y_true = [0, 0, 1, 1]  
y_scores = [0.1, 0.4, 0.35, 0.8]      # ROC曲线   
fpr, tpr, thresholds = roc_curve(y_true, y_scores)   
auc = roc_auc_score(y_true, y_scores)      # 绘图   
plt.figure()   
plt.plot(fpr, tpr, label=f'ROC curve (AUC = {auc:.2f})')   
plt.xlabel('False Positive Rate')   
plt.ylabel('True Positive Rate')   
plt.title('ROC Curve')   
plt.legend(loc='lower right')   
plt.show()   

30.特征重要性可视化

  • 在集成模型(如随机森林、XGBoost)中,通过特征重要性分数来衡量特征对模型的贡献。
语法
importances = model.feature_importances_   
  • 特征重要性通常通过计算特征在分裂节点上的贡献度(如减少的不纯度)得出。
示例代码
from sklearn.ensemble 
import RandomForestClassifier   
import matplotlib.pyplot as plt   
import numpy as np      # 示例数据   
X = np.random.rand(100, 4)   
y = np.random.randint(0, 2, 100)      # 模型训练   
model = RandomForestClassifier(n_estimators=10, max_depth=5)   
model.fit(X, y)      # 特征重要性   
importances = model.feature_importances_      # 可视化   
plt.bar(range(len(importances)), importances)   
plt.xlabel('Feature Index')   
plt.ylabel('Importance')   
plt.title('Feature Importance')   
plt.show()   

31.深度学习:TensorFlow创建简单神经网络

  • 使用TensorFlow构建和训练简单的前馈神经网络,适合分类和回归任务。
语法
import tensorflow as tf   
model = tf.keras.Sequential([tf.keras.layers.Dense(units, activation),...])   
model.compile(optimizer, loss, metrics)   
model.fit(X_train, y_train, epochs)   
  • 神经网络由多个层组成,每层包含神经元,进行线性加权求和后,使用激活函数引入非线性。
示例代码
import tensorflow as tf   
import numpy as np      # 示例数据   
X_train = np.random.rand(100, 3)   
y_train = np.random.randint(0, 2, 100)      # 创建模型   
model = tf.keras.Sequential([tf.keras.layers.Dense(16, activation='relu', input_shape=(3,)),       
tf.keras.layers.Dense(8, activation='relu'),       
tf.keras.layers.Dense(1, activation='sigmoid')])      # 编译模型   
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])      # 训练模型   
model.fit(X_train, y_train, epochs=10, batch_size=8)   

32.深度学习:PyTorch创建简单神经网络

  • 使用PyTorch构建简单神经网络,支持更灵活的模型设计和训练控制。
语法
import torch.nn as nn   
model = nn.Sequential(nn.Linear(input_size, output_size), nn.ReLU(), ...)   
loss_fn = nn.CrossEntropyLoss()   
optimizer = torch.optim.SGD(model.parameters(), lr)   
  • PyTorch通过模块化设计,支持定义前向传播、反向传播和参数更新的全过程。
示例代码
import torch   
import torch.nn as nn   
import torch.optim as optim      # 示例数据   
X_train = torch.rand(100, 3)   
y_train = torch.randint(0, 2, (100,))      # 模型定义   
model = nn.Sequential(nn.Linear(3, 16),nn.ReLU(),nn.Linear(16, 8),nn.ReLU(),nn.Linear(8, 1),nn.Sigmoid())      
# 损失函数与优化器   
loss_fn = nn.BCELoss()   
optimizer = optim.Adam(model.parameters(), lr=0.01)      # 训练模型   
for epoch in range(10):       
optimizer.zero_grad()       
output = model(X_train).squeeze()       
loss = loss_fn(output, y_train.float())       
loss.backward()       
optimizer.step()       
print(f"Epoch {epoch+1}, Loss: {loss.item()}")   

33.时间序列分析:ARIMA模型

  • ARIMA是一种经典的时间序列建模方法,适用于平稳数据。
语法
from statsmodels.tsa.arima.model 
import ARIMA   
model = ARIMA(data, order=(p, d, q))   
results = model.fit()   
  • ARIMA由自回归(AR)、差分(I)和移动平均(MA)三部分组成,通过参数调整捕获时间序列特征。
示例代码
import pandas as pd   
from statsmodels.tsa.arima.model 
import ARIMA      # 示例时间序列数据   
data = pd.Series([100, 120, 130, 125, 150, 160])      # 构建ARIMA模型   
model = ARIMA(data, order=(1, 1, 1))   
results = model.fit()      # 输出结果   
print(results.summary())   

34.自然语言处理:文本清理

  • 文本清理是NLP中的基础操作,包括去除标点符号、转换大小写、移除停用词等。
语法
import re   
cleaned_text = re.sub(r'[^\w\s]', '', text.lower())   
  • 文本清理统一输入数据的格式,去除冗余信息,减少模型训练的复杂性。
示例代码
import re   
from nltk.corpus import stopwords   
import nltk   
nltk.download('stopwords')      # 示例文本   
text = "Hello World! This is an example of text preprocessing in NLP."      # 清理步骤   
text = text.lower()  # 转换为小写   
text = re.sub(r'[^\w\s]', '', text)  # 去除标点   
stop_words = set(stopwords.words('english'))   
cleaned_text = ' '.join(word for word in text.split() if word not in stop_words)      
print("Cleaned Text:")   
print(cleaned_text)   

35.自然语言处理:词袋模型(BoW)

  • 词袋模型是将文本表示为词频向量的技术,适合基础文本分类任务。
语法
from sklearn.feature_extraction.text 
import CountVectorizer   
vectorizer = CountVectorizer()   
X = vectorizer.fit_transform(texts)   
  • 通过统计每个单词的出现频率,将文本表示为稀疏矩阵,忽略单词的顺序信息。
示例代码
from sklearn.feature_extraction.text 
import CountVectorizer      # 示例文本   
texts = ["I love Python programming.", "Python is great for data science!"]      # 词袋模型   
vectorizer = CountVectorizer()   
X = vectorizer.fit_transform(texts)      
print("Feature Names:", vectorizer.get_feature_names_out())   
print("Word Frequency Matrix:")   
print(X.toarray())   

36.自然语言处理:TF-IDF

  • TF-IDF(词频-逆文档频率)是一种加权方式,用于衡量单词对文本的独特贡献度。
语法
from sklearn.feature_extraction.text 
import TfidfVectorizer   
vectorizer = TfidfVectorizer()   
X = vectorizer.fit_transform(texts)   
  • TF:词频,表示某单词在文档中的出现频率。
  • IDF:逆文档频率,表示单词在整个语料库中的重要性,公式为 ( \text{IDF} = \log\frac{N}{1+\text{df}} )。
示例代码
from sklearn.feature_extraction.text 
import TfidfVectorizer      # 示例文本   
texts = ["I love Python programming.", "Python is great for data science!"]      # TF-IDF计算   
vectorizer = TfidfVectorizer()   
X = vectorizer.fit_transform(texts)      
print("Feature Names:", vectorizer.get_feature_names_out())   
print("TF-IDF Matrix:")  
print(X.toarray())   

37.文本分类:朴素贝叶斯

  • 朴素贝叶斯是一种基于概率的分类算法,假设特征之间相互独立。
语法
from sklearn.naive_bayes 
import MultinomialNB   
model = MultinomialNB()   
model.fit(X_train, y_train)   
  • 根据贝叶斯定理,预测类别为 ( P(y|X) \propto P(X|y)P(y) )。
示例代码
from sklearn.naive_bayes 
import MultinomialNB   
from sklearn.feature_extraction.text 
import CountVectorizer      # 示例文本   
texts = ["I love Python programming.", "Python is great for data science!", "I hate bugs."]   
labels = [1, 1, 0]      # 词袋表示   
vectorizer = CountVectorizer()   
X = vectorizer.fit_transform(texts)      # 训练朴素贝叶斯   
model = MultinomialNB()   
model.fit(X, labels)      # 测试   
test_texts = ["Python is fun!", "I hate errors."]   
X_test = vectorizer.transform(test_texts)   
predictions = model.predict(X_test)      
print("Predictions:", predictions)   

38.深度学习:LSTM(长短期记忆网络)

  • LSTM是一种循环神经网络(RNN),设计用于捕捉长时间序列依赖关系,适合处理时间序列或文本数据。
语法
from tensorflow.keras.models 
import Sequential   
from tensorflow.keras.layers 
import LSTM, Dense   
model = Sequential([LSTM(units, input_shape=(timesteps, features)),Dense(output_units, activation)])   
  • LSTM通过“遗忘门”、“输入门”和“输出门”控制信息流动,解决传统RNN中梯度消失或爆炸问题。
示例代码
import numpy as np   
from tensorflow.keras.models 
import Sequential   
from tensorflow.keras.layers 
import LSTM, Dense      # 示例时间序列数据   
X_train = np.random.rand(100, 10, 1)  # 100条样本,10个时间步,每步1个特征  
y_train = np.random.randint(0, 2, 100)      # 构建LSTM模型   
model = 
Sequential([LSTM(32, input_shape=(10, 1), activation='tanh'),Dense(1, activation='sigmoid')])      
# 编译模型   
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])      # 训练模型   
model.fit(X_train, y_train, epochs=10, batch_size=8)   

39.深度学习:Transformer基础

  • Transformer是基于注意力机制的深度学习模型,擅长处理序列到序列任务(如机器翻译和文本生成)。
语法
from transformers 
import Transformer   
model = Transformer(config)   
  • Transformer通过“自注意力机制”计算输入序列中每个位置的加权表示,摆脱了传统RNN的序列处理限制。
示例代码
from transformers 
import BertTokenizer, BertModel   
import torch      # 加载预训练模型和分词器   
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')   
model = BertModel.from_pretrained('bert-base-uncased')      # 输入文本   
text = "Deep learning with transformers is powerful."   
inputs = tokenizer(text, return_tensors='pt')      # 获取编码表示   
outputs = model(**inputs)   
last_hidden_states = outputs.last_hidden_state      
print("Last Hidden States Shape:", last_hidden_states.shape)   

40.强化学习:Q-Learning算法

  • Q-Learning是一种基于表格的强化学习算法,通过学习状态-动作值函数(Q值)指导智能体的行为选择。
语法
Q[state, action] = Q[state, action] + α * (reward + γ * max(Q[next_state]) - Q[state, action])   
  • 智能体在环境中探索和利用,更新Q值表格,使其逐渐逼近最优策略。
示例代码
import numpy as np      # 参数初始化   
states = 5  
actions = 2   
Q = np.zeros((states, actions))   
alpha = 0.1   
gamma = 0.9      # 模拟更新Q值   
state = 0   
action = 1   
next_state = 3   
reward = 10      # 更新Q值   
Q[state, action] = Q[state, action] + alpha * (reward + gamma * np.max(Q[next_state]) - Q[state, action])      
print("Updated Q-Table:")   
print(Q)   

41.数据自动化:AutoML

  • AutoML(自动化机器学习)通过自动选择特征、算法和超参数调优,简化模型开发流程。
语法
from autosklearn.classification 
import AutoSklearnClassifier   
model = AutoSklearnClassifier()   
model.fit(X_train, y_train)   
  • AutoML通过搜索空间优化、模型组合和管道自动化,提供高效的模型选择和调优方案。
示例代码
from autosklearn.classification 
import AutoSklearnClassifier   
from sklearn.datasets 
import load_iris   
from sklearn.model_selection 
import train_test_split      # 示例数据   
data = load_iris()   
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2)      # 使用AutoML   
model = AutoSklearnClassifier(time_left_for_this_task=60)   model.fit(X_train, y_train)      # 测试   
predictions = model.predict(X_test)      
print("Predictions:", predictions)   

42.文本生成:GPT模型

  • GPT(生成式预训练变换器)是一种基于Transformer的生成模型,用于文本生成、摘要、对话等任务。
语法
from transformers 
import GPT2Tokenizer, GPT2LMHeadModel   
model = GPT2LMHeadModel.from_pretrained('gpt2')   
  • 通过自回归生成方式,GPT从输入序列生成下一个单词,重复生成直至完成。
示例代码
from transformers 
import GPT2Tokenizer, GPT2LMHeadModel      # 加载模型和分词器   
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')   
model = GPT2LMHeadModel.from_pretrained('gpt2')      # 输入文本   
input_text = "Once upon a time"   
inputs = tokenizer.encode(input_text, return_tensors='pt')      # 文本生成   
outputs = model.generate(inputs, max_length=50, num_return_sequences=1, no_repeat_ngram_size=2)      # 解码输出   
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)   
print("Generated Text:")   
print(generated_text)   

43.图网络:Graph Neural Network(GNN)

  • GNN是一种处理图结构数据的深度学习模型,应用于社交网络分析、推荐系统等领域。
语法
from torch_geometric.nn 
import GCNConv   
conv = GCNConv(in_channels, out_channels)   
  • 通过聚合节点及其邻居的信息,GNN学习节点嵌入向量,捕获图结构中的关系。
示例代码
import torch   
from torch_geometric.nn 
import GCNConv   
from torch_geometric.data 
import Data      # 构建图数据   
edge_index = torch.tensor([[0, 1, 1, 2], [1, 0, 2, 1]], dtype=torch.long)   
x = torch.tensor([[1], [2], [3]], dtype=torch.float)      # 图神经网络层   
conv = GCNConv(1, 2)   
x = conv(x, edge_index)      
print("Node Embeddings:")   
print(x)   

44.生成对抗网络(GAN):基本实现

  • GAN是一种生成模型,由生成器和判别器组成,生成器学习生成与真实数据分布相似的样本。
语法
import torch.nn as nn   # 定义生成器和判别器   
class Generator(nn.Module): ...   
class Discriminator(nn.Module): ...   
  • 生成器(Generator):尝试生成逼真的数据。
  • 判别器(Discriminator):判断输入数据是真实的还是生成的。 通过对抗训练,生成器不断提高生成样本的真实性。
示例代码
import torch   
import torch.nn as nn   
import torch.optim as optim      # 定义生成器   
class Generator(nn.Module):       
def __init__(self, input_dim, output_dim):           
super(Generator, self).__init__()           
self.model = nn.Sequential(nn.Linear(input_dim, 128),nn.ReLU(),nn.Linear(128, output_dim),nn.Tanh())          
def forward(self, x):           
return self.model(x)      # 定义判别器   
class Discriminator(nn.Module):       
def __init__(self, input_dim):           
super(Discriminator, self).__init__()           
self.model = nn.Sequential(nn.Linear(input_dim, 128),nn.ReLU(),nn.Linear(128, 1),nn.Sigmoid())          
def forward(self, x):           
return self.model(x)      # 超参数   
z_dim = 100   
data_dim = 28 * 28  # 示例MNIST数据      
# 初始化生成器和判别器   
gen = Generator(z_dim, data_dim)   
disc = Discriminator(data_dim)      # 损失函数和优化器   
criterion = nn.BCELoss()   
gen_opt = optim.Adam(gen.parameters(), lr=0.0002)   
disc_opt = optim.Adam(disc.parameters(), lr=0.0002)      # 示例训练循环   
for epoch in range(10):       # 生成假样本       
z = torch.randn(64, z_dim)       
fake_data = gen(z)          # 判别器训练       
real_data = torch.randn(64, data_dim)  # 示例真实数据       
disc_loss = criterion(disc(real_data), torch.ones(64, 1)) + \                   
criterion(disc(fake_data.detach()), torch.zeros(64, 1))       
disc_opt.zero_grad()       
disc_loss.backward()       
disc_opt.step()          # 生成器训练       
gen_loss = criterion(disc(fake_data), torch.ones(64, 1))       
gen_opt.zero_grad()       
gen_loss.backward()       
gen_opt.step()          
print(f"Epoch {epoch+1}, Disc Loss: {disc_loss.item()}, Gen Loss: {gen_loss.item()}")   

45.多模态学习:处理图像与文本的联合表示

  • 多模态学习旨在联合学习和整合来自多个模态(如图像、文本)的信息,用于任务如图像描述生成和多模态分类。
语法
from transformers 
import CLIPProcessor, CLIPModel   
model = CLIPModel.from_pretrained('openai/clip-vit-base-patch32')   
  • 多模态学习通过设计共享或专用表示空间,捕捉模态间的相互关系。
示例代码
from transformers 
import CLIPProcessor, CLIPModel   
from PIL import Image      # 加载CLIP模型和处理器   
model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")   
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")      # 输入图像和文本   
image = Image.open("example.jpg")   
text = ["A photo of a cat", "A photo of a dog"]      # 处理输入   
inputs = processor(text=text, images=image, return_tensors="pt", padding=True)      # 计算相似性   
outputs = model(**inputs)   
logits_per_image = outputs.logits_per_image  # 图像与文本的相似性分数   
probs = logits_per_image.softmax(dim=1)  # 概率      
print("Similarity probabilities:", probs)   

46.迁移学习:加载预训练模型进行微调

  • 迁移学习利用在大规模数据集上预训练的模型,适用于新任务的微调,减少训练时间和数据需求。
语法
from tensorflow.keras.applications 
import VGG16   
model = VGG16(weights='imagenet', include_top=False)   
  • 冻结预训练模型的部分层或全部层,并添加新的任务特定层进行微调。
示例代码
from tensorflow.keras.applications 
import VGG16   
from tensorflow.keras.layers 
import Dense, Flatten   
from tensorflow.keras.models 
import Model   
from tensorflow.keras.optimizers 
import Adam   
import numpy as np      # 加载预训练模型   
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))      # 冻结卷积基   
for layer in base_model.layers:       
layer.trainable = False      # 添加新层   
x = Flatten()(base_model.output)   
x = Dense(128, activation='relu')(x)   
predictions = Dense(10, activation='softmax')(x)      # 构建新模型   
model = Model(inputs=base_model.input, outputs=predictions)      # 编译模型   
model.compile(optimizer=Adam(learning_rate=0.001), loss='categorical_crossentropy', metrics=['accuracy'])      
# 示例数据   
X_train = np.random.rand(32, 224, 224, 3)   
y_train = np.random.randint(0, 10, (32, 10))      # 微调模型  
model.fit(X_train, y_train, epochs=5, batch_size=8)   

47.强化学习:深度Q网络(DQN)

  • DQN结合深度学习和Q-Learning,用神经网络逼近Q值函数,适合高维状态空间
语法
import torch.nn as nn   
class DQN(nn.Module): ...   
  • DQN使用经验回放和目标网络来稳定训练,减少相关性和更新震荡。
示例代码
import torch   
import torch.nn as nn   
import torch.optim as optim   
import random   
import numpy as np      # 定义DQN网络   
class DQN(nn.Module):       
def __init__(self, input_dim, output_dim):           
super(DQN, self).__init__()           
self.model = nn.Sequential(nn.Linear(input_dim, 128),nn.ReLU(),nn.Linear(128, output_dim))          
def forward(self, x):           
return self.model(x)      # 示例环境和参数   
state_dim = 4   
action_dim = 2   
memory = []   
gamma = 0.99      # 初始化网络和优化器   
policy_net = DQN(state_dim, action_dim)   
target_net = DQN(state_dim, action_dim)   
target_net.load_state_dict(policy_net.state_dict())   
optimizer = optim.Adam(policy_net.parameters(), lr=0.001)      # 经验回放与训练   
def train():       
if len(memory) < 64:           
return       
batch = random.sample(memory, 64)       
states, actions, rewards, next_states = zip(*batch)          
states = torch.tensor(states, dtype=torch.float)       
actions = torch.tensor(actions, dtype=torch.long).unsqueeze(1)       
rewards = torch.tensor(rewards, dtype=torch.float)       
next_states = torch.tensor(next_states, dtype=torch.float)          # 计算Q值       
q_values = policy_net(states).gather(1, actions)       
next_q_values = target_net(next_states).max(1)[0].detach()       
target_q_values = rewards + gamma * next_q_values          # 损失函数       
loss = nn.MSELoss()(q_values, target_q_values.unsqueeze(1))       
optimizer.zero_grad()       
loss.backward()       
optimizer.step()      # 示例存储与训练   
memory.append((np.random.rand(4), 1, 1.0, np.random.rand(4)))   
train()   

48.超参数优化:使用Optuna进行调参

  • Optuna是一种高效的自动化超参数优化工具,支持树结构Parzen估计(TPE)和贝叶斯优化。
语法
import optuna   def objective(trial):       
...   
study = optuna.create_study(direction="maximize")   
study.optimize(objective, n_trials=100)   
  • 通过迭代优化,Optuna基于以往试验结果更新候选参数的概率分布,逐步接近最优参数组合。
示例代码
import optuna   
from sklearn.datasets 
import load_iris   
from sklearn.ensemble 
import RandomForestClassifier   
from sklearn.model_selection 
import cross_val_score   
from sklearn.model_selection 
import train_test_split      # 数据   
data = load_iris()   
X, y = data.data, data.target      # 定义目标函数   
def objective(trial):       
n_estimators = trial.suggest_int("n_estimators", 10, 200)       
max_depth = trial.suggest_int("max_depth", 1, 32)       
min_samples_split = trial.suggest_int("min_samples_split", 2, 20)          
clf = RandomForestClassifier(n_estimators=n_estimators,max_depth=max_depth,        
min_samples_split=min_samples_split,random_state=42,)       
return cross_val_score(clf, X, y, cv=3).mean()      # 创建并优化Study   
study = optuna.create_study(direction="maximize")   
study.optimize(objective, n_trials=50)      # 输出最优参数   
print("Best hyperparameters:", study.best_params)   

49.自然语言处理:情感分析

  • 情感分析通过分类模型判断文本的情感倾向,广泛应用于舆情监测、用户反馈分析等领域。
语法
from transformers 
import pipeline   
classifier = pipeline("sentiment-analysis")   
classifier("I love programming!")   
  • 通过预训练语言模型(如BERT或DistilBERT)进行微调,将文本向量映射到情感类别。
示例代码
from transformers 
import pipeline      # 加载预训练情感分析管道   
classifier = pipeline("sentiment-analysis")      # 示例文本   
text = "I am very happy with this product!"      # 情感分类   
result = classifier(text)   
print("Sentiment Analysis Result:", result)   

50.模型解释性:SHAP值分析

  • SHAP(Shapley Additive Explanations)是一种模型解释方法,用于量化每个特征对预测结果的贡献。
语法
import shap   
explainer = shap.Explainer(model, data)   
shap_values = explainer(data)   
  • 基于Shapley值理论,SHAP为每个特征分配一个数值,反映其对模型预测的影响。
示例代码
import shap   
from sklearn.ensemble 
import RandomForestClassifier   
from sklearn.datasets 
import load_iris   
import pandas as pd      # 数据   
data = load_iris()   
X = pd.DataFrame(data.data, columns=data.feature_names)   
y = data.target      # 训练模型   
model = RandomForestClassifier()   
model.fit(X, y)      # 创建SHAP解释器   
explainer = shap.Explainer(model, X)   
shap_values = explainer(X)      # 绘制解释结果   
shap.summary_plot(shap_values, X)   

图片

总结

  • 最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利

  • 最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】领取!
  • ① Python所有方向的学习路线图,清楚各个方向要学什么东西
  • ② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
  • ③ 100多个Python实战案例,学习不再是只会理论
  • ④ 华为出品独家Python漫画教程,手机也能学习

可以扫描下方二维码领取【保证100%免费在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值