lazypredict库进行回归和分类

Lazy Predict 是一个用于快速评估多种机器学习模型性能的Python库。它可以帮助你在非常短的时间内测试多种机器学习模型并选择最佳模型,而无需手动编写大量的代码。Lazy Predict 主要用于数据科学和机器学习的初步模型选择阶段。

1、安装Lazy Predict库。

1
pip install lazypredict

2、使用 Lazy Predict

下面是一个简单的示例,演示如何使用 Lazy Predict 进行模型评估:

  1. 导入必要的库。
  2. 加载数据集(在这个示例中,我们使用 Scikit-Learn 提供的 iris 数据集)。
  3. 使用 LazyClassifier 或 LazyRegressor 进行模型评估。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

from lazypredict.Supervised import LazyClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import pandas as pd

data = load_iris()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = pd.Series(data.target)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

clf = LazyClassifier(verbose=0, ignore_warnings=True, custom_metric=None)

models, predictions = clf.fit(X_train, X_test, y_train, y_test)

print(models)

3、Lazy Predict 的工作原理

Lazy Predict 会自动调用 Scikit-Learn 中的多个分类器或回归器,进行训练和评估。它会输出每个模型的性能指标,例如准确率、精度、召回率等。这样,你可以快速比较不同模型的表现,并选择最合适的模型进行进一步优化。

4、Lazy Predict的技巧

  1. 清洗数据,删除任何无效或缺失的值,对数值进行缩放标准化归一化。
  2. 注意将数据合理地划分为训练集和测试集。这将有助于避免过度拟合,并确保您的预测尽可能准确。
  3. 注意你的预测的准确性。Lazy Predict并不完美,有时其结果可能不准确。如果你注意到你的预测是关闭的,尝试调整你的参数或使用不同的算法。

5、使用LazyRegressor进行回归和分类示例

导入必须的一些库:

Pandas

Pandas 是一个功能强大的开源数据分析和数据处理库,广泛用于Python编程。它提供了高效的数据结构和数据分析工具,特别是用于处理和操作表格数据。

  • 主要特点

    • DataFrame:二维数据结构,类似于电子表格或SQL表格,可以进行行和列的操作。
    • Series:一维数据结构,类似于一列数据。
    • 数据处理:支持数据清洗、过滤、合并和重塑等操作。
    • 文件读写:可以轻松读取和写入CSV、Excel、SQL数据库等多种格式的数据。
  • 示例代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    import pandas as pd

    df = pd.read_csv('data.csv')

    print(df.head())

    filtered_df = df[df['column_name'] > 10]

    grouped_df = df.groupby('group_column').agg({'value_column': 'mean'})

NumPy

NumPy 是Python中用于科学计算的基础包。它支持多维数组和矩阵运算,并且提供了大量的数学函数库。

  • 主要特点

    • 多维数组对象ndarray,提供高效的存储和操作。
    • 数学函数库:包括基本的线性代数、傅里叶变换和随机数生成等功能。
    • 高速计算:利用向量化操作,大大提高计算效率。
  • 示例代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import numpy as np

    array = np.array([1, 2, 3, 4])

    array_sum = np.sum(array)
    array_mean = np.mean(array)

    matrix = np.array([[1, 2], [3, 4]])

    result = np.dot(matrix, matrix)

Matplotlib / Seaborn

Matplotlib 是一个用于绘制图表的库,Seaborn 是基于 Matplotlib 之上的高级数据可视化库,提供了更简洁的API和更漂亮的图表样式。

  • 主要特点

    • Matplotlib:支持多种图表类型,如折线图、柱状图、散点图等。
    • Seaborn:提供更高级的统计图表,如箱线图、分布图、热力图等,并且与Pandas数据框无缝集成。
  • 示例代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import matplotlib.pyplot as plt
    import seaborn as sns
    import pandas as pd

    plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
    plt.ylabel('Y-Axis Label')
    plt.xlabel('X-Axis Label')
    plt.title('Simple Line Plot')
    plt.show()

    df = pd.read_csv('data.csv')
    sns.set(style="whitegrid")
    sns.boxplot(x="category", y="value", data=df)
    plt.title('Box Plot by Category')
    plt.show()

Scikit-Learn

Scikit-Learn 是一个用于机器学习的库,包含大量的机器学习算法和工具,用于数据预处理、模型构建、模型评估等任务。

  • 主要特点

    • 算法库:包含分类、回归、聚类等多种算法。
    • 数据预处理:提供数据标准化、归一化、特征选择等功能。
    • 模型评估:支持交叉验证、网格搜索、评估指标计算等。
  • 示例代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    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
    import pandas as pd

    df = pd.read_csv('data.csv')
    X = df.drop('target', axis=1)
    y = df['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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import numpy as np

np.float = float
np.int = int
np.bool = bool

from sklearn import datasets
from sklearn.utils import shuffle
from lazypredict.Supervised import LazyRegressor, LazyClassifier

def regression_example():

boston = datasets.load_boston()

X, y = shuffle(boston.data, boston.target, random_state=13)
offset = int(X.shape[0] * 0.9)

X_train, y_train = X[:offset], y[:offset]
X_test, y_test = X[offset:], y[offset:]

reg = LazyRegressor(verbose=0, ignore_warnings=False, custom_metric=None)

models, predictions = reg.fit(X_train, X_test, y_train, y_test)

print(models)

# 分类任务示例
def classification_example():

canc = datasets.load_breast_cancer()

X, y = shuffle(canc.data, canc.target, random_state=13)
offset = int(X.shape[0] * 0.9)

X_train, y_train = X[:offset], y[:offset]
X_test, y_test = X[offset:], y[offset:]

clf = LazyClassifier(verbose=0, ignore_warnings=False, custom_metric=None)


models, predictions = clf.fit(X_train, X_test, y_train, y_test)


print(models)

if __name__ == "__main__":

print("Regression Example:")
regression_example()

print("\nClassification Example:")
classification_example()

image-20240712154040353