如何在Python中绘制散点图并绘制两条功能的预测线?

时间:2019-01-08 09:02:15

标签: python pandas numpy logistic-regression

我试图基于X内的两个特征来预测y。在读取我的excel文件并将数据拆分为列之后,我的X值如下所示:

     SibSp  Parch
0        1      0
1        1      0
2        0      0
3        1      0
4        0      0
5        0      0
6        0      0
7        3      1
8        0      2
9        1      0

y表示生存率,其中1个幸存,0个死亡。 X还有很多行。我正在使用train_test_split(X, y, test_size=0.4, random_state=101)进行训练和测试数据拆分,并有一种训练和测试方法。我的训练代码如下:

def train():
    # Get Data Split
    X_train, X_test, y_train, y_test = initData()

    # Create LinearRegression Instance
    lm = LinearRegression()

    # Fit Training Values
    lm.fit(X_train,y_train)

    visualise(X_test, y_test, lm.predict(X_test))

    # Return Trained Data With Testing Data
    return X_test, y_test, lm

我的测试代码如下:

def test():
    # Get The Trained Classifier
    X, y, lm = train()

    # Fit New Values
    lm.fit(X, y)

    visualise(X, y, lm.predict(X))

哪个看起来不错-我认为是这样。我现在正在尝试将数据可视化为带有预测线图的散点图。

def visualise(X, y, predictions):
    features = X.shape[1]
    colors   = ['red', 'blue']
    i        = 0
    while i <= features -1:
        plt.scatter(X.iloc[:, i], y, color=colors[i])
        # Update: Forgot to add this line when posting question
        plt.plot(X.iloc[:, i], predictions, color=colors[i])
        i=+1

但这给了我疯狂的输出,到处都有行。我尝试上网查看,发现sklearn's example。这是我试图复制的内容:

我想也许是因为我有两个功能,所以可能需要分别识别它们。

def visualise(X, y, predictions):
    newY = np.zeros(X.shape[0], X.shape[1]);
    newY[:, 0:1] = newY.iloc[:, 0]
    plt.scatter(X, y, color='blue')
    plt.plot(X, predictions, color='red')

    plt.xticks(())
    plt.yticks(())

    plt.show()

我必须创建一个newY数组,因为X具有两个特征,y具有1,因此形状有所不同。但是现在在newY = np.zeros(X.shape[0], X.shape[1]);

行出现了错误
  

TypeError:数据类型无法理解

更新

def visualise(X, y, predictions):
    newY = np.zeros((X.shape[0], X.shape[1]));
    newY[:, 0] = y
    newY[:, 1] = y
    plt.scatter(X, newY, color='blue')
    plt.plot(X, predictions, color='red')

现在可以修复错误,但这是我的输出:

enter image description here

如何绘制散点图并绘制一条线来进行预测?

1 个答案:

答案 0 :(得分:1)

由于具有两个功能,因此无法绘制预测线。如果可能的话,您可能需要预测轮廓图。

您的示例与此处的两个功能示例非常相似 https://scikit-learn.org/stable/auto_examples/svm/plot_iris.html