Python在数据科学与机器学习中的十大应用实例深入解析与代码实战
·
数据清洗与预处理
在数据科学项目中,数据清洗是至关重要的基础环节。Python的Pandas库提供了强大的数据预处理功能,能够高效处理缺失值、异常值和重复数据。以下是使用Pandas进行数据清洗的示例代码:
缺失值处理实战
import pandas as pdimport numpy as np# 创建示例数据data = {'年龄': [25, np.nan, 34, 45, 21], '收入': [50000, 62000, np.nan, 87000, 45000]}df = pd.DataFrame(data)# 检查缺失值print(缺失值统计:)print(df.isnull().sum())# 填充缺失值df['年龄'].fillna(df['年龄'].mean(), inplace=True)df['收入'].fillna(df['收入'].median(), inplace=True)print(
处理后的数据:)print(df)
探索性数据分析(EDA)
EDA帮助分析人员理解数据分布和特征关系。Python的Matplotlib和Seaborn库提供了丰富的可视化工具:
数据分布可视化
import seaborn as snsimport matplotlib.pyplot as plt# 加载示例数据集tips = sns.load_dataset('tips')# 绘制分布图plt.figure(figsize=(10,6))sns.histplot(tips['total_bill'], kde=True)plt.title('消费金额分布')plt.show()# 特征关系分析sns.pairplot(tips, hue='time')plt.show()
机器学习建模
Scikit-learn是Python中最流行的机器学习库,提供了各种算法实现:
分类模型示例
from sklearn.model_selection import train_test_splitfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.metrics import accuracy_score# 数据准备X = tips[['total_bill', 'tip', 'size']]y = tips['time']# 划分训练测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 训练模型model = RandomForestClassifier()model.fit(X_train, y_train)# 预测与评估predictions = model.predict(X_test)print(f模型准确率:{accuracy_score(y_test, predictions):.2f})
特征工程
特征工程显著影响模型性能,以下是常见处理方法:
特征缩放与编码
from sklearn.preprocessing import StandardScaler, OneHotEncoder# 数值特征标准化scaler = StandardScaler()numerical_features = ['total_bill', 'tip']X_num = scaler.fit_transform(tips[numerical_features])# 类别特征编码encoder = OneHotEncoder()categorical_features = ['day', 'sex']X_cat = encoder.fit_transform(tips[categorical_features])
文本数据处理
自然语言处理是数据科学的重要应用领域:
文本向量化
from sklearn.feature_extraction.text import TfidfVectorizer# 示例文本数据documents = [ Python在数据科学中非常流行, 机器学习需要大量数据, 深度学习是机器学习的子领域]# TF-IDF向量化vectorizer = TfidfVectorizer()X_tfidf = vectorizer.fit_transform(documents)print(特征名称:, vectorizer.get_feature_names_out())
时间序列分析
Python在处理时间序列数据方面表现出色:
时间序列预测
import pandas as pdfrom statsmodels.tsa.arima.model import ARIMA# 创建时间序列数据dates = pd.date_range('2023-01-01', periods=100)ts_data = pd.Series(np.random.randn(100), index=dates)# ARIMA模型拟合model = ARIMA(ts_data, order=(1,1,1))results = model.fit()print(results.summary())
聚类分析
无监督学习在客户细分等场景中应用广泛:
K-means聚类
from sklearn.cluster import KMeansfrom sklearn.preprocessing import StandardScaler# 数据标准化scaler = StandardScaler()X_scaled = scaler.fit_transform(tips[['total_bill', 'tip']])# K-means聚类kmeans = KMeans(n_clusters=3, random_state=42)clusters = kmeans.fit_predict(X_scaled)tips['cluster'] = clusters
模型评估与优化
模型性能评估和超参数调优是关键步骤:
交叉验证与网格搜索
from sklearn.model_selection import GridSearchCV# 参数网格param_grid = { 'n_estimators': [50, 100, 200], 'max_depth': [None, 10, 20]}# 网格搜索grid_search = GridSearchCV( RandomForestClassifier(), param_grid, cv=5, scoring='accuracy')grid_search.fit(X_train, y_train)print(最佳参数:, grid_search.best_params_)
深度学习应用
TensorFlow和PyTorch支持复杂的深度学习模型:
神经网络构建
import tensorflow as tffrom tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import Dense# 构建简单神经网络model = Sequential([ Dense(64, activation='relu', input_shape=(4,)), Dense(32, activation='relu'), Dense(3, activation='softmax')])model.compile( optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
模型部署
模型部署是将机器学习模型投入生产的关键环节:
使用Flask部署模型
from flask import Flask, request, jsonifyimport pickleapp = Flask(__name__)# 加载训练好的模型with open('model.pkl', 'rb') as f: model = pickle.load(f)@app.route('/predict', methods=['POST'])def predict(): data = request.get_json() prediction = model.predict([data['features']]) return jsonify({'prediction': prediction.tolist()})if __name__ == '__main__': app.run(debug=True)更多推荐


所有评论(0)