Python 数据科学高级应用指南

1. 数据科学基础

数据科学是一门融合了统计学、计算机科学和领域知识的学科,它使用科学方法、流程和算法从数据中提取知识和见解。Python 是数据科学领域最流行的编程语言之一,提供了丰富的库和工具。

import numpy as np
import pandas as pd

# 创建示例数据
np.random.seed(42)
data = pd.DataFrame({
    'feature1': np.random.randn(100),
    'feature2': np.random.randn(100),
    'target': np.random.randint(0, 2, 100)
})

print(data.head())

2. NumPy 高级应用

2.1 数组操作

import numpy as np

# 创建数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 矩阵乘法
mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[5, 6], [7, 8]])
product = np.dot(mat1, mat2)
print("Matrix product:\n", product)

# 广播
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([10, 20, 30])
result = arr1 + arr2
print("Broadcasting result:\n", result)

2.2 线性代数

import numpy as np

# 特征值和特征向量
matrix = np.array([[1, 2], [3, 4]])
eigenvalues, eigenvectors = np.linalg.eig(matrix)
print("Eigenvalues:", eigenvalues)
print("Eigenvectors:\n", eigenvectors)

# 矩阵求逆
inverse = np.linalg.inv(matrix)
print("Inverse matrix:\n", inverse)

# 奇异值分解
svd = np.linalg.svd(matrix)
print("SVD result:", svd)

3. Pandas 高级应用

3.1 数据处理

import pandas as pd
import numpy as np

# 加载数据
df = pd.read_csv('data.csv')

# 数据清洗
df = df.dropna()
df = df.drop_duplicates()

# 数据转换
df['new_feature'] = df['feature1'] * df['feature2']

# 分组和聚合
grouped = df.groupby('category').agg({'value': ['mean', 'sum', 'count']})
print(grouped)

3.2 时间序列处理

import pandas as pd
import numpy as np

# 创建时间序列数据
index = pd.date_range('2020-01-01', periods=365, freq='D')
data = pd.DataFrame({'value': np.random.randn(365).cumsum()}, index=index)

# 时间序列重采样
daily_data = data.resample('D').mean()
weekly_data = data.resample('W').mean()
monthly_data = data.resample('M').mean()

# 移动平均
data['rolling_mean'] = data['value'].rolling(window=7).mean()

print(data.head())

4. Scikit-learn 高级应用

4.1 机器学习模型

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report

# 加载数据
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)

# 训练模型
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Classification Report:\n", classification_report(y_test, y_pred))

4.2 特征工程

from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression

# 特征标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 类别特征编码
encoder = OneHotEncoder()
categorical_features = X[:, [0]]  # 假设第一列是类别特征
encoded_features = encoder.fit_transform(categorical_features).toarray()

# 构建管道
preprocessor = ColumnTransformer(
    transformers=[
        ('num', StandardScaler(), [1, 2, 3]),  # 数值特征
        ('cat', OneHotEncoder(), [0])  # 类别特征
    ]
)

pipeline = Pipeline([
    ('preprocessor', preprocessor),
    ('classifier', LogisticRegression())
])

# 训练管道
pipeline.fit(X_train, y_train)

# 预测
y_pred = pipeline.predict(X_test)

5. 实际应用场景

5.1 预测分析

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_squared_error

# 加载数据
df = pd.read_csv('house_prices.csv')

# 准备特征和目标
X = df.drop('price', axis=1)
y = df['price']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练模型
model = GradientBoostingRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)

5.2 聚类分析

import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 生成聚类数据
np.random.seed(42)
x = np.random.randn(1000, 2)

# 训练聚类模型
kmeans = KMeans(n_clusters=3, random_state=42)
y_pred = kmeans.fit_predict(x)

# 可视化聚类结果
plt.scatter(x[:, 0], x[:, 1], c=y_pred)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red')
plt.title('K-Means Clustering')
plt.show()

6. 最佳实践

  1. 数据质量:确保数据质量,包括数据清洗、处理缺失值和异常值。
  2. 特征工程:根据问题域进行特征工程,提取有意义的特征。
  3. 模型选择:根据问题类型选择合适的模型,如分类、回归或聚类。
  4. 模型评估:使用合适的评估指标评估模型性能。
  5. 超参数调优:使用网格搜索或随机搜索优化模型超参数。
  6. 交叉验证:使用交叉验证确保模型的泛化能力。
  7. 可重现性:设置随机种子,确保实验结果可重现。

7. 总结

Python 是数据科学领域的强大工具,提供了丰富的库和工具,从数据处理到模型训练和评估。通过掌握这些工具的高级应用,我们可以更加高效地进行数据分析和机器学习。

在实际应用中,数据科学可以用于预测分析、聚类分析、异常检测等多种场景,为决策提供数据支持。通过不断学习和实践,我们可以提高数据科学的技能,解决更加复杂的问题。

希望本文对你理解和应用 Python 数据科学有所帮助!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐