Нужна помощь в преобразовании панд данных dataframe (iloc) в массив numpy? - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь написать код для линейной регрессии с несколькими переменными. Я получаю данные из TXT-файла в переменную «data». Я пытаюсь инициализировать первые два столбца переменной x, которая работает нормально. На следующем шаге при попытке добавить массив np.ones к этому 2d массиву я получаю неузнаваемые данные. Я добавил код и значение массива x до добавления массива 'np.ones' и после. Может кто-нибудь сказать мне, что я делаю не так? Благодарю. Мой код

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('ex1data2.txt',header = None)
x = data.iloc[:,0:2]
y = data.iloc[:,2]
m=len(x)

y = y[:,np.newaxis]
x = (x - np.mean(x))/np.std(x)
ones = np.ones((m,1))

x = np.hstack((ones,x))

Значение x перед шагом np.hstack ()

           0         1
0   0.131415 -0.226093
1  -0.509641 -0.226093
2   0.507909 -0.226093
3  -0.743677 -1.554392
4   1.271071  1.102205
5  -0.019945  1.102205

Значение после шага np.hstack ()

[[ 1.00000000e+00  1.31415422e-01 -2.26093368e-01]
 [ 1.00000000e+00 -5.09640698e-01 -2.26093368e-01]
 [ 1.00000000e+00  5.07908699e-01 -2.26093368e-01]
 [ 1.00000000e+00 -7.43677059e-01 -1.55439190e+00]
 [ 1.00000000e+00  1.27107075e+00  1.10220517e+00]
 [ 1.00000000e+00 -1.99450507e-02  1.10220517e+00]]

1 Ответ

1 голос
/ 01 июля 2019

Я думаю, что делает именно то, что вы хотите.Это просто обозначение 1.31415422e-01 = 1.31415422 * 10 ^ (- 1) = 0.131415

Основано на названии вопроса.Если вы хотите продолжать работать с DataFrame pandas вместо получения массива numpy, я рекомендую вместо

x = np.hstack((ones,x))

использовать

x = x.assign(ones = 1)

Это сохранит x как DataFrame с новым столбцом, состоящим только из 1, который называется "единицы".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...