sklearn学习

sklearn

字典实例化(转化为二进制数据)

import jieba
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer


from sklearn.preprocessing import MinMaxScaler, StandardScaler, Imputer

def dictvenc():
    # 实例化  字典向量化   有多少种状态就用多少位的二进制表示,1表示有,0表示没有
    dict = DictVectorizer(sparse=False)
    # 调用fit_transform
    data = dict.fit_transform([{'city': '北京', 'pos': '北方', 'temperature': 100},
                               {'city': '上海', 'pos': '东方', 'temperature': 60},
                               {'city': '深圳', 'pos': '南方', 'temperature': 30},
                               {'city': '重庆', 'pos': '南方', 'temperature': 70},
                               ])
    print(dict.get_feature_names())
    print(data)
    print(dict.inverse_transform(data)[0])
    return None

文本实例化

def countvec():
    # 对文本进行特征值化
    # 文本向量化
    cv = CountVectorizer()
    # 会过滤掉一些英文停止词   中文的没有
    data = cv.fit_transform(["this is a test test", "we have a test"])
    print(cv.get_feature_names())
    print(data.toarray())
    return None


def cutword():
    con1 = jieba.cut('床前明月光, 我要学python.')
    con2 = jieba.cut('床前明月光, 疑是地上霜.')
    con3 = jieba.cut('生存或死亡, 这是一个问题.')

    # 转化成列表
    content1 = list(con1)
    content2 = list(con2)
    content3 = list(con3)

    c1 = ' '.join(content1)
    c2 = ' '.join(content2)
    c3 = ' '.join(content3)
    return c1, c2, c3


def hanzivec():
    c1, c2, c3 = cutword()
    cv = CountVectorizer()
    print(c1, c2, c3)
    data = cv.fit_transform([c1, c2, c3])

    for f_name in cv.get_feature_names():
        print(f_name)

    print(data.toarray())
    return None

hanzivec()

归一化处理

数据归一化处理 将所有数的区间缩放到2-3

def mm():
    # 归一化处理    按列算的
    mm = MinMaxScaler(feature_range=(2, 3))
    data = mm.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])

    print(data)

标准化缩放(缩放至-1, 1进行比较)

def stand():
    # 标准化缩放   每一列相加为0, 标准差为1
    std = StandardScaler()
    data = std.fit_transform([[1., -1., 3.],
                              [2., 4., 2.],
                              [4., 6., -1.]])
    print(data)

线性模型(最小二乘法)二维回归预测

import numpy as np
from sklearn import linear_model
import matplotlib.pyplot as plt
# 房屋面积与价格历史数据(csv文件)   转化为二维数组
data = np.array([[150, 6450], [200, 7450], [250, 8450], [300, 9450], [350, 11450], [400, 15450], [600, 18450]])
# print(data[:, 0])  这是X轴坐标   y轴坐标
plt.scatter(data[:, 0], data[:, 1], color='blue')
#线性模型
regr = linear_model.LinearRegression()
# 拟合
regr.fit(data[:, 0].reshape(-1, 1), data[:, 1])
# 直线的斜率,截距
a, b = regr.coef_, regr.intercept_
plt.plot(data[:, 0], regr.predict(data[:, 0].reshape(-1, 1)), color='red')
# 预测第175天房价数据
print(regr.predict([[175]]))
plt.show()

多维回归(多个参数预测)

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler

def price_predict():
    # 数据有三个特征:距离地铁距离,附近小学数量,小区绿化率
    X = np.array([[500.0, 3.0, 0.3], [1000.0, 1.0, 0.6], [750.0, 2.0, 0.3], [600.0, 5.0, 0.2],
                  [1200.0, 1.0, 0.6]])
    Y = np.array([10000., 9000., 8000., 12000., 8500.])
    #具有三个特征的房屋对应的房价
    std_x = StandardScaler()
    x_tarin = std_x.fit_transform(X)

    std_y = StandardScaler()
    y_train = std_y.fit_transform(Y.reshape(-1, 1))
    # 构建线性预测模型
    lr = LinearRegression()
    # 模型在历史数据上进行训练  Y.reshape(-1, 1)将Y变为二维数组, fit函数要求二维数组
    lr.fit(x_tarin, y_train)
    # 使用训练模型预测新房屋[1300, 3.0, 0.4]的价格
    x_predict = std_x.transform(np.array([[1300, 3.0, 0.4]]))
    print(std_y.inverse_transform(lr.predict(x_predict)))

if __name__ == '__main__':
    price_predict()

示例

# 通过使用sklearn里面提供的数据包来进行使用,数据包是关于美国购房的信息
from sklearn.datasets import load_boston
# 加载数据
lb = load_boston()
# 数据的特征数据
X = lb.data
print(X[0])
# 数据的预测价格
Y = lb.target
std_x = StandardScaler()
x_house = std_x.fit_transform(X)
std_y = StandardScaler()
y_house = std_y.fit_transform(Y.reshape(-1, 1))
# 构建线性预测模型
lr = LinearRegression()
# 模型在历史数据上进行训练
lr.fit(x_house, y_house)
# 使用训练模型预测房屋价格
x_predict = std_x.transform((np.array([[6.320e-03, 1.800e+01, 2.310e+00, 0.000e+00, 5.380e-01, 6.575e+00, 6.520e+01,4.090e+00, 1.000e+00, 2.960e+02, 1.530e+01, 3.969e+02, 4.980e+00]])))
print(std_y.inverse_transform(lr.predict(x_predict)))

利用数据生成数据集和测试集,用来生成预测模型

def boston_linear():
    # 线性回归直接预测房子价格
    # 获取数据
    lb = load_boston()
    # 分割数据集到训练集和测试集
    x_train, x_test, y_train, y_test = train_test_split(lb.data, lb.target, test_size=0.25)
    # 特征值和目标值都必须进行标准化处理,实例化两个标准化API
    std_x = StandardScaler()
    x_train = std_x.fit_transform(x_train)
    # 用转化训练集的标准归一化测试集
    x_test = std_x.transform(x_test)
    #测试数据目标值
    std_y = StandardScaler()
    # -1 表示系统自动计算行数
    y_train = std_y.fit_transform(y_train.reshape(-1, 1))
    y_test = std_y.transform(y_test.reshape(-1, 1))
    # estimator预测
    # 建立线性模型预测结果
    lr = LinearRegression()
    lr.fit(x_train, y_train)
    # 保存训练好的模型
    joblib.dump(lr, './test.pkl')
    # 预测测试集的房子价格
    # print("orgfin value is :::", std_y.inverse_transform(y_test[9]))
    # y_lr_predict = std_y.inverse_transform(lr.predict(np.array([x_test[9]])))
    # print(u"predict value is :::", y_lr_predict)
    model = joblib.load("./test.pkl")
    # 测试集的原始数据
    y_median = std_y.inverse_transform(y_test)
    # 测试集的预测数据
    y_predict = std_y.inverse_transform(lr.predict(x_test))
    # 测试集的个数
    n = y_predict.shape[0]
    # 均方差     测试集原始数据和预测数据的平方差的和除以个数
    # a = ((y_median - y_predict) ** 2).sum() / n
    # 平均绝对值误差  测试集原始数据和预测数据的差的和除以个数
    # a = abs(y_median - y_predict).sum() / n
    # 可释方差得分   
    # a = 1 - np.std(y_median - y_predict) / np.std(y_median)
    # 中值绝对误差
    # a = np.sum(abs(y_median - y_predict))
    # R2决定系数(拟合优度)
    a = r2_score(y_median, y_predict)
    print(a)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sklearn是一个流行的Python机器学习库,它提供了丰富的工具和算法,用于数据预处理、特征工程、模型选择和评估等任务。如果你想学习Sklearn,以下是一个学习路线的参考: 1. 首先,你可以先了解Sklearn的基本概念和常用函数。可以通过阅读官方文档、教程或者书籍来深入理解Sklearn的API和功能。 2. 掌握数据预处理技术。Sklearn提供了丰富的数据预处理方法,包括特征缩放、数据标准化、数据平衡等。你可以通过学习Sklearn的Preprocessing模块来了解和应用这些技术。 3. 学习不同类型的机器学习算法。Sklearn支持多种机器学习算法,包括分类、回归、聚类、降维等。你可以通过学习Sklearn的各个子模块(如Classification、Regression、Clustering等)来了解和应用这些算法。 4. 理解模型评估和选择方法。Sklearn提供了多种模型评估指标和交叉验证技术,可以帮助你评估模型性能并选择最合适的模型。你可以学习Sklearn的Model Evaluation模块来了解如何评估和选择模型。 5. 实践项目和案例研究。通过实际项目和案例研究,你可以将所学的Sklearn知识应用到实际情境中,并深入理解不同算法的应用场景和优缺点。 6. 持续学习和探索。Sklearn是一个不断更新和演进的库,你可以通过阅读官方文档、参与社区讨论和阅读相关论文等方式,持续学习和探索Sklearn的新特性和最佳实践。 综上所述,这是一个初学者学习Sklearn的基本路线。通过深入学习和实践,你可以逐渐掌握Sklearn的使用技巧和机器学习的基本原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值