【问题标题】:Loop to fill matrix in Python循环填充Python中的矩阵
【发布时间】:2017-03-11 09:22:38
【问题描述】:

在行中,diabetes_x = diabetes.data[:, np.newaxis, 0]它从该糖尿病数据结构中选择 20 个特征之一作为向量。 这个 x 向量的一部分被馈送到机器学习函数,另一部分用于测试。

最后,它将这些测试 x 向量提供给预测函数以获得y_predict=regr.predict(diabetes_x_train)。

问题是:如何循环这个,以便获得矩阵而不是向量来填充所有 20 个特征?

例如:

diabetes_x 是 mxn => diabetes_x_train, diabetes_x_test 是 mxn y_predict 是 mxn

这是python代码:

from sklearn import linear_model # Machine Learning tool
import numpy as np # Mathematics and Linear Algebra tool
import pandas as pd # data structure tool
import matplotlib.pyplot as plt # scientific plotting tool
import seaborn as sns # # scientific plotting tool
%matplotlib inline

### Linear Regression example
from sklearn import datasets, linear_model

# Load the diabetes dataset
diabetes = datasets.load_diabetes()
# Use only one feature
diabetes_x = diabetes.data[:, np.newaxis, 0] # change 0 to something else for other features
# Split the data into training/testing sets
diabetes_x_train = diabetes_x[:-20]
diabetes_x_test = diabetes_x[-20:]
# Split the targets into training/testing sets
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]
# Create linear regression object
regr = linear_model.LinearRegression()
# Train the model using the training sets
regr.fit(diabetes_x_train, diabetes_y_train)
# Obtain prediction based on previous experience
y_predict=regr.predict(diabetes_x_train)

【问题讨论】:

    标签: python loops matrix data-structures


    【解决方案1】:

    您可以尝试选择所有 10 个功能(至少我在 Windows 上使用的 sklearn 0.18.1 和 python 2.7 总共有 10 个):

    diabetes_x = diabetes.data[:, range(10)] # select 10 features
    # Split the data into training/testing sets
    diabetes_x_train = diabetes_x[:-20,:]
    print diabetes_x_train.shape
    # (422L, 10L)
    diabetes_x_test = diabetes_x[-20:,:]
    print diabetes_x_test.shape
    # (20L, 10L)
    # Split the targets into training/testing sets
    diabetes_y_train = diabetes.target[:-20]
    diabetes_y_test = diabetes.target[-20:]
    # Create linear regression object
    regr = linear_model.LinearRegression()
    # Train the model using the training sets
    regr.fit(diabetes_x_train, diabetes_y_train)
    # Obtain prediction based on previous experience
    y_predict=regr.predict(diabetes_x_test)
    #print y_predict
    
    plt.plot(range(len(diabetes.target)), diabetes.target, 'r-', label='test')
    plt.plot(range(len(diabetes_y_train), len(diabetes.target)), y_predict, 'g-', label='predict')
    plt.legend()
    plt.show() 
    

    【讨论】:

    • 您是否将所有 10 个特征提供给同一个线性回归模型“regr”?还是python会自动为每个输入输出对单独制作一个?
    • diabetes_x_train 数据集的列数为 10(您可以从打印的shape 中看到),这是训练数据中的特征数。如果您在 sklearn 拟合函数中提供此数据集,则会自动考虑所有 10 个特征。
    猜你喜欢
    • 2021-07-11
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    相关资源
    最近更新 更多