临时起意
我每隔一段时间就喜欢清空一次 GitHub 或者全设为私有仓库,但果然仓库里不能没有 blog 啊(白嫖真的爽)。
功能测试
代码着色测试
下面是一个简单的鸢尾花数据分析示例:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
# 加载鸢尾花数据集
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target
df['species'] = df['target'].map({0: 'setosa', 1: 'versicolor', 2: 'virginica'})
# 数据基本信息
print("数据集形状:", df.shape)
print("\n数据集前5行:")
print(df.head())
# 描述性统计
print("\n描述性统计:")
print(df.describe())
# 数据可视化
plt.figure(figsize=(12, 8))
# 特征分布图
plt.subplot(2, 2, 1)
sns.histplot(data=df, x='sepal length (cm)', hue='species', kde=True)
plt.title('花萼长度分布')
plt.subplot(2, 2, 2)
sns.scatterplot(data=df, x='sepal length (cm)', y='sepal width (cm)', hue='species')
plt.title('花萼长度 vs 宽度')
# 相关性热图
plt.subplot(2, 2, 3)
correlation_matrix = df.select_dtypes(include=[np.number]).corr()
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', center=0)
plt.title('特征相关性')
# 箱线图
plt.subplot(2, 2, 4)
df_melted = df.melt(id_vars=['species'],
value_vars=['sepal length (cm)', 'sepal width (cm)',
'petal length (cm)', 'petal width (cm)'])
sns.boxplot(data=df_melted, x='variable', y='value', hue='species')
plt.xticks(rotation=45)
plt.title('特征箱线图')
plt.tight_layout()
plt.show()
# 机器学习模型
X = iris.data
y = iris.target
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 训练逻辑回归模型
model = LogisticRegression(random_state=42)
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"\n模型准确率: {accuracy:.4f}")
print("\n分类报告:")
print(classification_report(y_test, y_pred, target_names=iris.target_names))
# 特征重要性
feature_importance = pd.DataFrame({
'feature': iris.feature_names,
'importance': np.abs(model.coef_[0])
})
feature_importance = feature_importance.sort_values('importance', ascending=False)
print("\n特征重要性:")
print(feature_importance)
这段代码展示了数据加载、探索性数据分析、可视化和机器学习建模的完整流程。
流程图渲染测试
数学公式渲染测试
逻辑回归数学原理
逻辑回归使用 sigmoid 函数将线性组合映射到概率空间:
$$P(y=1|x) = \frac{1}{1 + e^{-(\beta_0 + \beta_1x_1 + \beta_2x_2 + … + \beta_nx_n)}}$$
其中 $\beta_0$ 是截距项,$\beta_i$ 是第 $i$ 个特征的系数。
准确率计算公式
模型准确率定义为正确预测样本数占总样本数的比例:
$$Accuracy = \frac{TP + TN}{TP + TN + FP + FN}$$
其中:
- $TP$:真正例(True Positive)
- $TN$:真负例(True Negative)
- $FP$:假正例(False Positive)
- $FN$:假负例(False Negative)
相关系数计算
皮尔逊相关系数用于衡量两个变量间的线性相关程度:
$$r_{xy} = \frac{\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n}(x_i - \bar{x})^2}\sqrt{\sum_{i=1}^{n}(y_i - \bar{y})^2}}$$
相关系数范围为 $[-1, 1]$,值越接近 $\pm 1$ 表示线性相关性越强。
标准差和方差
描述性统计中的标准差公式:
$$\sigma = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i - \mu)^2}$$
其中 $\mu$ 是均值,$n$ 是样本数量。方差为标准差的平方:$\sigma^2$。