在本教程中,我们将从头开始创建一个水质分类器应用程序,并使用Docker部署到云中。
>我们将首先探索OpenAI O1模型并了解其功能。然后,我们将通过API和CHATGPT访问该模型,并在开发构建水质分类器应用程序的有效提示之前,先尝试O1-preiview和O1-Mini版本。
>输出后,我们将通过本地执行Python代码来将O1模型提供的代码和文件添加到项目文件夹中,然后加载,预处理,训练和评估。最后,我们将构建一个FastAPI应用程序,并使用Docker将其部署在拥抱面上。
>
如果您是AI的新手,那么AI基础知识技能轨道是一个不错的起点。它将帮助您了解流行的AI主题,例如Chatgpt和大型语言模型。
>由作者 图像
开始使用O1-preiview和O1-Mini在本节中,我们将学习如何使用它们来解决复杂的问题。
访问O1模型
>要在Chatgpt上访问它,您必须单击“模型选择”下拉选项,然后选择“ O1-Preview”模型,如下所示。
from openai import OpenAI client = OpenAI() response = client.chat.completions.create( model="o1-preview", messages=[ { "role": "user", "content": "Create an SQL database from scratch, including guides on usage and code everything in Python." } ] ) print(response.choices[0].message.content)。
在chatgpt中使用o1-preview模型
我是西班牙的自由职业者,在美国一家公司工作。在过去的一年中,我赚了12万美元,我需要计算我所欠的税款。请考虑我8个月前搬到西班牙。
>响应花费了将近30秒,但响应详细介绍了。它包括数学方程式,税收信息以及所有必要的细节,以确定我们欠西班牙政府多少。
响应分为以下部分:
>不仅创建了一个适当的简历网站,而且还为我们提供了有关如何免费在Github页面上发布的指南。>
1。及时工程 >我们将在及时工程上花费更多的时间,因为我们要确保将所有项目指令都提供给模型。 提示:“我的项目经理已任务使用https://www.kaggle.com/datasets/adityakadiwal/water-potability提供的Kaggle数据集开发水质应用程序。请提供有关文件,Python软件包和代码的所有必要信息,以便我们可以构建一个高度准确的模型。
1。使用API从Kaggle加载数据集并将其解压缩到数据文件夹中。
>
>
6。确保使用JINJA2模板添加用户界面。 7。使用Docker选项将应用程序部署在拥抱面线上。
>现在,我们将将所有代码转换为Python和HTML文件,使我们的生活更加轻松。 后续提示:“请将代码转换为Python文件。”
3。加载数据集 >我们将使用Kaggle API加载水质Kaggle数据集并将其解压缩到数据文件夹中。 运行Python文件将下载数据集,解压缩并删除zip文件。 $ python .srcdownload_data.py 4。预处理数据并执行数据分析 >预处理python文件将加载数据,清洁,处理丢失的数据,缩放它,然后保存缩放器和预处理数据集。它还将执行数据分析并保存指标和数据可视化。
5。建筑和培训 >训练脚本加载了预处理数据,并使用它来训练随机的森林分类器。然后,Skope用于保存模型,手动跟踪实验,然后将模型元数据保存为JSON文件。
>
>总体准确性不是很好。但是,我们总是可以要求O1模型提高准确性。 指标文件夹包含所有保存的模型评估数字和指标。我们可以手动查看它以详细了解模型性能。 为了为FastAPI应用程序创建用户界面,我们需要创建索引和结果页面。这可以通过在应用程序目录中创建模板文件夹并添加两个HTML文件来完成这一点:一个用于主页,一个用于结果页面。 >查看FastAPI教程:使用FastApi详细了解FastAPI框架以及如何在项目中实现它的简介。 如果您不熟悉HTML,请不要担心。您只需要复制和粘贴代码并信任O1模型即可。 > appTemplatesform.html: > appTemplatesResult.html: 主应用程序Python文件具有两个Python函数:主页和预测。 “主页”功能显示包含输入框和一个按钮的欢迎页面。 “预测”函数会转换用户输入,通过模型运行并显示结果,指示水是否饮用。 > apptemplatesmain.py: >
注意:O1模型也提供了有关如何运行文件的所有信息。
> OpenAI O1模型已经生成了Docker代码,指南和参考链接,以成功地学习如何在拥抱面前部署应用程序。
>
> dockerfile:
这是我们的应用存储库应该看起来的方式: 我们的模型是一个大文件(> 10MB),因此我们需要使用Git LFS跟踪它。安装git lfs,并使用扩展名“ .skops”跟踪所有文件。 阶段所有更改,使用消息提交,然后将其推向远程服务器。 >在拥抱脸上转到您的应用页面,您会发现它正在构建容器并安装所有必要的软件包。 来源:水质分类器
来源:水质分类器 >
来源:水质分类器
>输出: 所有项目文件,数据,模型和元数据都可以在KingAbzPro/Water-water-app github存储库上提供。
在本教程中,我们已经看到了OpenAI的O1推理模型的功能。我们建立了一个完整的机器学习项目,只需对代码进行一些更改,它立即起作用。该模型完美地处理了每个命令,并产生了出色的结果,而无需进行后续说明。
>赚取顶级AI认证
审查摘要部分为我们提供了欠政府的大约税款,这很有帮助。
在chatgpt
>提示:“
请使用Python框架为我的数据科学简历创建一个静态网站。
如果您有兴趣使用Chatgpt构建数据科学项目,请查看使用CHATGPT进行数据科学项目的指南。您将学习如何使用CHATGPT进行项目计划,数据分析,数据预处理,模型选择,超参数调整,开发Web应用程序并部署。
>阅读chatgpt的初学者指南提示工程,以了解如何在chatgpt中编写适当的提示并生成所需的结果。迅速的工程是一门艺术,随着O1模型的引入,已经变得更加必要学习。
2。设置
O1模型提供了设置项目目录所需的所有信息。我们只需要使用代码编辑器在项目目录中创建文件夹和文件。
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="o1-preview",
messages=[
{
"role": "user",
"content": "Create an SQL database from scratch, including guides on usage and code everything in Python."
}
]
)
print(response.choices[0].message.content)
import os
# Ensure the data directory exists
os.makedirs("data", exist_ok=True)
# Download the dataset
os.system("kaggle datasets download -d adityakadiwal/water-potability -p data --unzip")
> datapreprocess_data.py:
Dataset URL: https://www.kaggle.com/datasets/adityakadiwal/water-potability
License(s): CC0-1.0
Downloading water-potability.zip to data
100%|████████████████████████████████████████████████████████████████████████████████| 251k/251k [00:00<00:00, 304kB/s]
100%|████████████████████████████████████████████████████████████████████████████████| 251k/251k [00:00<00:00, 303kB/s]
import os
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
import joblib
# Create directories if they don't exist
os.makedirs("metrics", exist_ok=True)
os.makedirs("models", exist_ok=True)
# Load the dataset
data = pd.read_csv("data/water_potability.csv")
# Check for missing values and save the summary
missing_values = data.isnull().sum()
missing_values.to_csv("metrics/missing_values.csv")
# Statistical summary
stats = data.describe()
stats.to_csv("metrics/data_statistics.csv")
# Pair plot
sns.pairplot(data, hue="Potability")
plt.savefig("metrics/pairplot.png")
# Correlation heatmap
plt.figure(figsize=(10, 8))
sns.heatmap(data.corr(), annot=True)
plt.savefig("metrics/correlation_heatmap.png")
# Handle missing values
imputer = SimpleImputer(strategy="mean")
data_imputed = pd.DataFrame(imputer.fit_transform(data), columns=data.columns)
# Feature scaling
scaler = StandardScaler()
features = data_imputed.drop("Potability", axis=1)
target = data_imputed["Potability"]
features_scaled = scaler.fit_transform(features)
# Save the scaler
joblib.dump(scaler, "models/scaler.joblib")
# Save preprocessed data
preprocessed_data = pd.DataFrame(features_scaled, columns=features.columns)
preprocessed_data["Potability"] = target
preprocessed_data.to_csv("metrics/preprocessed_data.csv", index=False)
$ python .\src\preprocess_data.py
import os
import json
import skops.io as sio
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# Load preprocessed data
data = pd.read_csv("metrics/preprocessed_data.csv")
features = data.drop("Potability", axis=1)
target = data["Potability"]
# Split the data
X_train, X_test, y_train, y_test = train_test_split(
features, target, test_size=0.2, random_state=42, stratify=target
)
# Train the model
model = RandomForestClassifier(n_estimators=200, random_state=42)
model.fit(X_train, y_train)
# Save the model using skops
os.makedirs("models", exist_ok=True)
sio.dump(model, "models/water_quality_model.skops")
# Track experiments and save metadata
metadata = {
"model_name": "RandomForestClassifier",
"parameters": model.get_params(),
"training_score": model.score(X_train, y_train),
}
with open("models/metadata.json", "w") as f:
json.dump(metadata, f, indent=4)
6。模型评估> srcevaluate_model.py:
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="o1-preview",
messages=[
{
"role": "user",
"content": "Create an SQL database from scratch, including guides on usage and code everything in Python."
}
]
)
print(response.choices[0].message.content)
import os
# Ensure the data directory exists
os.makedirs("data", exist_ok=True)
# Download the dataset
os.system("kaggle datasets download -d adityakadiwal/water-potability -p data --unzip")
Dataset URL: https://www.kaggle.com/datasets/adityakadiwal/water-potability
License(s): CC0-1.0
Downloading water-potability.zip to data
100%|████████████████████████████████████████████████████████████████████████████████| 251k/251k [00:00<00:00, 304kB/s]
100%|████████████████████████████████████████████████████████████████████████████████| 251k/251k [00:00<00:00, 303kB/s]
7。创建一个FastApi应用程序
import os
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
import joblib
# Create directories if they don't exist
os.makedirs("metrics", exist_ok=True)
os.makedirs("models", exist_ok=True)
# Load the dataset
data = pd.read_csv("data/water_potability.csv")
# Check for missing values and save the summary
missing_values = data.isnull().sum()
missing_values.to_csv("metrics/missing_values.csv")
# Statistical summary
stats = data.describe()
stats.to_csv("metrics/data_statistics.csv")
# Pair plot
sns.pairplot(data, hue="Potability")
plt.savefig("metrics/pairplot.png")
# Correlation heatmap
plt.figure(figsize=(10, 8))
sns.heatmap(data.corr(), annot=True)
plt.savefig("metrics/correlation_heatmap.png")
# Handle missing values
imputer = SimpleImputer(strategy="mean")
data_imputed = pd.DataFrame(imputer.fit_transform(data), columns=data.columns)
# Feature scaling
scaler = StandardScaler()
features = data_imputed.drop("Potability", axis=1)
target = data_imputed["Potability"]
features_scaled = scaler.fit_transform(features)
# Save the scaler
joblib.dump(scaler, "models/scaler.joblib")
# Save preprocessed data
preprocessed_data = pd.DataFrame(features_scaled, columns=features.columns)
preprocessed_data["Potability"] = target
preprocessed_data.to_csv("metrics/preprocessed_data.csv", index=False)
$ python .\src\preprocess_data.py
import os
import json
import skops.io as sio
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# Load preprocessed data
data = pd.read_csv("metrics/preprocessed_data.csv")
features = data.drop("Potability", axis=1)
target = data["Potability"]
# Split the data
X_train, X_test, y_train, y_test = train_test_split(
features, target, test_size=0.2, random_state=42, stratify=target
)
# Train the model
model = RandomForestClassifier(n_estimators=200, random_state=42)
model.fit(X_train, y_train)
# Save the model using skops
os.makedirs("models", exist_ok=True)
sio.dump(model, "models/water_quality_model.skops")
# Track experiments and save metadata
metadata = {
"model_name": "RandomForestClassifier",
"parameters": model.get_params(),
"training_score": model.score(X_train, y_train),
}
with open("models/metadata.json", "w") as f:
json.dump(metadata, f, indent=4)
我们将首先在本地测试该应用程序,以验证它是否正在运行。$ python .\src\train_model.py
import os
import json
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.metrics import (
classification_report,
confusion_matrix,
roc_auc_score,
roc_curve,
)
import skops.io as sio
from sklearn.model_selection import train_test_split
# Load preprocessed data
data = pd.read_csv("metrics/preprocessed_data.csv")
features = data.drop("Potability", axis=1)
target = data["Potability"]
# Split the data
X_train, X_test, y_train, y_test = train_test_split(
features, target, test_size=0.2, random_state=42, stratify=target
)
# Load the model
model = sio.load("models/water_quality_model.skops")
# Predictions
y_pred = model.predict(X_test)
y_pred_proba = model.predict_proba(X_test)[:, 1]
# Classification report
report = classification_report(y_test, y_pred, output_dict=True)
with open("metrics/classification_report.json", "w") as f:
json.dump(report, f, indent=4)
# Confusion matrix
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt="d")
plt.title("Confusion Matrix")
plt.ylabel("Actual Label")
plt.xlabel("Predicted Label")
plt.savefig("metrics/confusion_matrix.png")
# ROC curve and AUC
fpr, tpr, _ = roc_curve(y_test, y_pred_proba)
roc_auc = roc_auc_score(y_test, y_pred_proba)
plt.figure()
plt.plot(fpr, tpr, label="AUC = %0.2f" % roc_auc)
plt.plot([0, 1], [0, 1], "k--")
plt.legend(loc="lower right")
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.title("Receiver Operating Characteristic")
plt.savefig("metrics/roc_curve.png")
# Overall accuracy
accuracy = model.score(X_test, y_test)
print(f"Overall Accuracy: {accuracy * 100:.2f}%")
8。使用docker
部署该应用程序在拥抱脸部集线器上
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="o1-preview",
messages=[
{
"role": "user",
"content": "Create an SQL database from scratch, including guides on usage and code everything in Python."
}
]
)
print(response.choices[0].message.content)
>
import os
# Ensure the data directory exists
os.makedirs("data", exist_ok=True)
# Download the dataset
os.system("kaggle datasets download -d adityakadiwal/water-potability -p data --unzip")
>要求.txt:Dataset URL: https://www.kaggle.com/datasets/adityakadiwal/water-potability
License(s): CC0-1.0
Downloading water-potability.zip to data
100%|████████████████████████████████████████████████████████████████████████████████| 251k/251k [00:00<00:00, 304kB/s]
100%|████████████████████████████████████████████████████████████████████████████████| 251k/251k [00:00<00:00, 303kB/s]
>
import os
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
import joblib
# Create directories if they don't exist
os.makedirs("metrics", exist_ok=True)
os.makedirs("models", exist_ok=True)
# Load the dataset
data = pd.read_csv("data/water_potability.csv")
# Check for missing values and save the summary
missing_values = data.isnull().sum()
missing_values.to_csv("metrics/missing_values.csv")
# Statistical summary
stats = data.describe()
stats.to_csv("metrics/data_statistics.csv")
# Pair plot
sns.pairplot(data, hue="Potability")
plt.savefig("metrics/pairplot.png")
# Correlation heatmap
plt.figure(figsize=(10, 8))
sns.heatmap(data.corr(), annot=True)
plt.savefig("metrics/correlation_heatmap.png")
# Handle missing values
imputer = SimpleImputer(strategy="mean")
data_imputed = pd.DataFrame(imputer.fit_transform(data), columns=data.columns)
# Feature scaling
scaler = StandardScaler()
features = data_imputed.drop("Potability", axis=1)
target = data_imputed["Potability"]
features_scaled = scaler.fit_transform(features)
# Save the scaler
joblib.dump(scaler, "models/scaler.joblib")
# Save preprocessed data
preprocessed_data = pd.DataFrame(features_scaled, columns=features.columns)
preprocessed_data["Potability"] = target
preprocessed_data.to_csv("metrics/preprocessed_data.csv", index=False)
$ python .\src\preprocess_data.py
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="o1-preview",
messages=[
{
"role": "user",
"content": "Create an SQL database from scratch, including guides on usage and code everything in Python."
}
]
)
print(response.choices[0].message.content)
>结论
以上是Openai O1-preiview教程:构建机器学习项目的详细内容。更多信息请关注PHP中文网其他相关文章!