Как мне сделать многомерный регрессионный анализ в Python?

1

Я запускаю следующий простой код со следующей гипотезой:

Значение A и значение B похожи друг на друга, а значение B равно значению A, объединяя несколько переменных.

поэтому моя гипотеза подобна этой

A = W1 (вес) * B + W2 (вес) C (anotehr varables) +...

и вот мой код try

hypothesis = tf.sigmoid(tf.matmul(X1, W1)+tf.matmul(X2, W2)+tf.matmul(X3, W3)+tf.matmul(X4, W4) + tf.matmul(X5, W5) + b1)


cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) * tf.log(1 - hypothesis))
train = tf.train.GradientDescentOptimizer(learning_rate=0.000000000000000001).minimize(cost)

predicted = tf.cast(hypothesis > 0.5, dtype=tf.float32)
accuracy = tf.reduce_mean(tf.cast(tf.equal(predicted, Y), dtype=tf.float32))

with tf.Session() as sess:
   # Initialize TensorFlow variables
   sess.run(tf.global_variables_initializer())
   for step in range(5000):
       sess.run(y, feed_dict={X1:ct, X2: temperature, X3:humidity, X4: windspeed, X5:tideheight, Y:sst})

Однако, когда я подтвердил значение этого кода, я придумал значение, которое не соответствовало вообще.

Это не кажется линейным, когда я смотрю на набор данных.

Я был бы признателен, если бы вы могли привести пример для этой ситуации.

мой набор данных:

 A         B             C              D         E       F
25.6    27.29999    24.4752741667   71.5801495  6.468   97.1
25.6    27.5    24.3449186667   71.1314193333   5.39    288.3
25.4    27.60001    24.4019961667   71.8209758333   6.076   103.7
25.5    27.5    24.3473485  71.3570816667   6.762   95.3
25.5    27.5    24.3420308333   71.9577738333   5.978   103.7
25.6    27.29999    24.464413   71.993804   6.37    105.8
25.6    27.29999    24.3999401667   71.5558695  6.664   100.2
                           ...
Теги:
tensorflow
regression

1 ответ

1
Лучший ответ

Я не уверен, что Neural Network является правильным выбором для этого типа проблем. Я бы предложил решить его с линейной регрессией. Я предпочел бы начать знакомство с библиотекой scikit-learn и ее алгоритмами для контролируемого обучения. http://scikit-learn.org/stable/supervised_learning.html#supervised-learning и pandas https://pandas.pydata.org/ для простой предварительной обработки данных. Познакомившись с библиотеками, попробуйте выполнить следующую стратегию:

  1. Сделайте предварительную обработку набора данных (т.е. Удалите nans, ненужные столбцы, масштабируйте свои функции)
  2. Разделите свой набор данных на обучающие и тестовые части.
  3. Попробуйте запустить несколько линейных моделей (например, LinearRegression, Ridge), попробуйте также улучшить схемы проверки (KFold, StratifiedKFold)
  4. Выберите подходящие показатели, чтобы проверить свои модели.

Документация по изучению Scikit должна содержать всю необходимую информацию. Удачи

Ещё вопросы

Сообщество Overcoder
Наверх
Меню