监督学习:分类与回归代码示例

分类

    分类任务的目标是根据输入数据预测一个离散的类别标签。例如,通过电子邮件的内容来判断它是垃圾邮件还是非垃圾邮件。常见的分类算法有支持向量机(SVM)、K近邻(KNN)、决策树、随机森林和神经网络等。

示例:使用Scikit-learn库实现简单的文本分类(垃圾邮件检测)

需要准备一些数据。这里假设已经包含邮件内容及其是否为垃圾邮件标签的数据集。

from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, classification_report

# 假设数据已经加载到变量emails中,其中每个条目都是一个字典,含有"text"和"label"两个键
emails = [
    {"text": "Free Viagra now!!!", "label": "spam"},
    {"text": "Hello, how are you?", "label": "ham"},
    # 更多数据...
]

# 准备数据
texts = [email["text"] for email in emails]
labels = [email["label"] for email in emails]

# 将文本转换为数值特征
vectorizer = CountVectorizer()
features = vectorizer.fit_transform(texts)

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

# 创建并训练模型
classifier = MultinomialNB()
classifier.fit(X_train, y_train)

# 预测
predictions = classifier.predict(X_test)

# 评估模型
print("Accuracy:", accuracy_score(y_test, predictions))
print(classification_report(y_test, predictions))

# 使用模型进行新数据的预测
new_emails = ["Win a million dollars now!", "Dinner at 7?"]
new_features = vectorizer.transform(new_emails)
predicted_labels = classifier.predict(new_features)
print(predicted_labels)
回归

    回归任务旨在预测连续值输出。比如预测房价。常用的方法包括线性回归、岭回归、Lasso回归和支持向量回归(SVR)等。

示例:基于房屋特征预测房价

这里我同样使用Scikit-learn来演示如何构建一个简单的回归模型以预测房价。假设有如下结构的数据集:

 

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

# 加载数据
data = pd.read_csv('house_prices.csv')  # 假设CSV文件包含房子的各种特征以及价格
features = data.drop('price', axis=1)
prices = data['price']

# 数据预处理
# 这里可以添加更多复杂的预处理步骤,如填充缺失值、标准化等
# features = ...  # 处理特征
# prices = ...    # 处理目标变量

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

# 创建并训练模型
model = LinearRegression()
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估模型性能
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"Mean Squared Error: {mse}")
print(f"R^2 Score: {r2}")

# 可视化结果(可选)
import matplotlib.pyplot as plt
plt.scatter(y_test, y_pred)
plt.xlabel("Actual Prices")
plt.ylabel("Predicted Prices")
plt.title("Actual Prices vs Predicted Prices")
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何遇mirror

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值