SciPy
SciPy 是一个强大的开源 Python 库,用于科学和技术计算。在 NumPy 的基础上,它提供了高级的数学算法、优化、积分、数据处理、可视化,并与 Matplotlib 和 Pandas 等库高度兼容,使其成为科学计算和数据分析不可或缺的工具。...
Scikit-learn 是一款免费的开源 Python 库,提供简单高效的数据挖掘与机器学习工具,包括分类、回归、聚类和降维等功能。
Scikit-learn,常写作 scikit-learn 或简写为 sklearn,是 Python 编程语言中功能强大的开源机器学习库。它旨在为预测性数据分析提供简单高效的工具,已成为全球数据科学家和机器学习实践者不可或缺的资源。
Scikit-learn 构建在多个流行的 Python 库之上,主要包括 NumPy、SciPy 和 matplotlib。它通过一致的 Python 接口提供多种有监督和无监督机器学习算法。该库以易用性、高性能和简洁的 API 著称,适合初学者和有经验的用户使用。
该项目最初由 David Cournapeau 于 2007 年以 scikits.learn(Google 编程之夏项目)形式启动。“scikits”(SciPy Toolkits)命名空间用于开发和分发 SciPy 的扩展。2010 年,Fabian Pedregosa、Gaël Varoquaux、Alexandre Gramfort 和 Vincent Michel 在法国计算机与自动化研究院(INRIA)Saclay 分部对该项目进行了进一步开发。
自 2010 年首次公开发布以来,Scikit-learn 在活跃的开发者和研究者社区推动下得到了重大发展。它已演变为 Python 最流行的机器学习库之一,在学术界和工业界被广泛应用。
Scikit-learn 实现了多种机器学习算法,包括:
Scikit-learn 设计了一套在所有模块中一致的 API。只要掌握了基本接口,就可以轻松切换不同模型。核心接口包括:
fit()
:用于训练模型。predict()
:用训练好的模型进行预测。transform()
:对数据进行修改或降维(用于预处理和降维)。该库针对性能进行了优化,核心算法采用 Cython(Python 的超集,能提供接近 C 语言的性能)实现,即使处理大规模数据集也能高效计算。
Scikit-learn 能与其他 Python 库无缝集成:
这种集成方式使得数据处理流程灵活且强大。
作为基于 BSD 许可协议的开源库,Scikit-learn 可免费用于个人和商业用途。其详尽的文档和活跃的社区支持,让各类用户都能轻松上手。
如果已安装 NumPy 和 SciPy,安装 Scikit-learn 非常简单。可以使用 pip 安装:
pip install -U scikit-learn
或使用 Anaconda 发行版时通过 conda 安装:
conda install scikit-learn
Scikit-learn 常用于构建预测模型和执行各类机器学习任务。基本流程如下:
在应用机器学习算法之前,需要对数据进行预处理:
StandardScaler
或 MinMaxScaler
等缩放器进行归一化或标准化。将数据集划分为训练集和测试集,以评估模型在未见数据上的表现:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
根据问题类型(分类、回归、聚类)选择合适的算法并训练模型:
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)
用训练好的模型对新数据进行预测:
y_pred = model.predict(X_test)
使用合适的指标评估模型表现:
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
通过网格搜索或随机搜索等方法优化模型性能:
from sklearn.model_selection import GridSearchCV
param_grid = {'n_estimators': [100, 200], 'max_depth': [3, 5, None]}
grid_search = GridSearchCV(RandomForestClassifier(), param_grid)
grid_search.fit(X_train, y_train)
用多份子集测试模型表现,验证其泛化能力:
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5)
print(f"Cross-validation scores: {scores}")
Scikit-learn 内置的经典数据集之一是鸢尾花数据集,任务是根据花萼长度、花萼宽度、花瓣长度和花瓣宽度四个特征将鸢尾花分为三类。
步骤:
from sklearn.datasets import load_iris
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
from sklearn.svm import SVC
model = SVC()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
利用加州房价数据集(注意:波士顿房价数据集因伦理原因已弃用,建议使用加州房价等替代),可根据房间数、犯罪率等特征进行回归预测。
步骤:
from sklearn.datasets import fetch_california_housing
housing = fetch_california_housing()
X, y = housing.data, housing.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"MSE: {mse}")
聚类可用于客户细分,将客户按购买行为分组。
步骤:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3)
kmeans.fit(X_scaled)
clusters = kmeans.labels_
虽然 Scikit-learn 并非专为自然语言处理(NLP)或聊天机器人设计,但它在构建可集成于 AI 系统(包括聊天机器人)的机器学习模型中十分有用。
Scikit-learn 提供将文本数据转为数值特征的工具:
from sklearn.feature_extraction.text import TfidfVectorizer
documents = ["Hello, how can I help you?", "What is your name?", "Goodbye!"]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(documents)
聊天机器人通常需要将用户问题归类为不同意图,以给出合适响应。可用 Scikit-learn 训练意图识别分类器。
步骤:
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(queries)
model = LogisticRegression()
model.fit(X, intents)
new_query = "Can you help me with my account?"
X_new = vectorizer.transform([new_query])
predicted_intent = model.predict(X_new)
理解用户消息的情感有助于提升聊天机器人体验。
from sklearn.datasets import fetch_openml
# 假设已有标注好的情感分析数据集
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = SVC()
model.fit(X_train, y_train)
Scikit-learn 模型可集成到更大的 AI 系统和自动化流程中:
流程集成:Scikit-learn 的 Pipeline
类可将预处理和建模步骤串联起来,便于自动化。
from sklearn.pipeline import Pipeline
pipeline = Pipeline([
('vectorizer', TfidfVectorizer()),
('classifier', LogisticRegression())
])
pipeline.fit(queries, intents)
模型部署:可用 joblib 保存训练好的模型并集成到生产系统。
import joblib
joblib.dump(model, 'model.joblib')
# 之后
model = joblib.load('model.joblib')
虽然 Scikit-learn 很全面,但针对特定需求也有其它选择:
Scikit-learn 相关研究
Scikit-learn 是一个集成了多种先进机器学习算法、适用于中小规模有监督与无监督问题的综合性 Python 模块。Fabian Pedregosa 等人于 2018 年发表的论文“Scikit-learn: Machine Learning in Python”对此工具进行了深入介绍。作者强调,Scikit-learn 旨在通过通用的高级语言,让非专业人士也能便捷地使用机器学习。该包专注于易用性、性能和 API 一致性,并保持极少的依赖,从而在学术和商业环境中都非常适用(基于简化的 BSD 许可协议)。更多详细信息、源码、二进制文件与文档可访问 Scikit-learn。原始论文见这里。
Scikit-learn 是一个为 Python 设计的开源机器学习库,旨在为数据分析和建模提供简单、高效的工具。它支持广泛的有监督和无监督学习算法,包括分类、回归、聚类和降维等。
Scikit-learn 提供一致性的 API、众多机器学习算法的高效实现、与 NumPy 和 pandas 等主流 Python 库的集成、详尽的文档以及强大的社区支持。
您可以使用 pip 命令 'pip install -U scikit-learn' 安装 Scikit-learn,或在使用 Anaconda 发行版时通过 'conda install scikit-learn' 进行安装。
Scikit-learn 并非为深度学习而设计。针对高级神经网络和深度学习任务,更适合使用 TensorFlow 或 PyTorch 等库。
是的,Scikit-learn 以易用性、简洁的 API 以及优秀的文档著称,非常适合机器学习领域的初学者和有经验的用户。
了解 Scikit-learn 如何简化您的机器学习项目。利用 Python 领先的 ML 库高效地构建、训练和部署模型。
SciPy 是一个强大的开源 Python 库,用于科学和技术计算。在 NumPy 的基础上,它提供了高级的数学算法、优化、积分、数据处理、可视化,并与 Matplotlib 和 Pandas 等库高度兼容,使其成为科学计算和数据分析不可或缺的工具。...
人工智能中的学习曲线是一种图形化表示,用于展示模型的学习性能与数据集大小或训练迭代次数等变量之间的关系,有助于诊断偏差-方差权衡、模型选择以及优化训练过程。...
spaCy 是一个强大的开源 Python 库,专为高级自然语言处理(NLP)而设计,以其速度、效率和面向生产的特性(如分词、词性标注和命名实体识别)而闻名。...