Ejemplo n.º 1
0
humidity_train, humidity_test, temperature_train, temperature_test = train_test_split(
    humidity, temperature, test_size=0.3, random_state=0)
humidity_train, humidity_test, apptemp_train, apptemp_test = train_test_split(
    humidity, apparentTemperature, test_size=0.3, random_state=0)
humidity_train = humidity_train
humidity_test = humidity_test
temperature_train = temperature_train.flatten()
temperature_test = temperature_test.flatten()
apptemp_train = apptemp_train.flatten()
apptemp_test = apptemp_test.flatten()

#Task 1 To predict Temperature given Humidity
from LinearRegression import LinearRegression

lr1 = LinearRegression(humidity_train, temperature_train)
print(lr1.computeCostFunction())
theta1 = lr1.returnTheta()
theta1, cost_history1, theta_history1 = lr1.performGradientDescent(10000, 0.01)
temperature_predict, temperature_error = lr1.predict(humidity_test,
                                                     temperature_test)
temperature_pred_normal, error_temp_normal = lr1.predictUsingNormalEquation(
    humidity_test, temperature_test)

plt.scatter(humidity_test, temperature_test)
plt.plot(humidity_test, temperature_pred_normal, 'r')
plt.title('Humidity vs Temperature using normal equation')
plt.xlabel('Humidity')
plt.ylabel('Temperature')
plt.show()

plt.scatter(humidity_test, temperature_test)
lr = LinearRegression(X_train, Y_train)

theta = lr.returnTheta()
print(theta)

#testing set prediction
y_pred_normal, error_percentage = lr.predictUsingNormalEquation(X_test, Y_test)
y_pred_normal = fs.inverse_transform_Y(y_pred_normal)
print(error_percentage)

#training set prediction
y_pred_train_normal, error_percentage_train_normal = lr.predictUsingNormalEquation(
    X_train, Y_train)
y_pred_train_normal = fs.inverse_transform_Y(y_pred_train_normal)
print(lr.computeCostFunction())

#learning parameters
n_iter = 1000
alpha = 0.05

theta, J_Array, theta_array = lr.performGradientDescent(n_iter, alpha)

y_pred_grad, ErrorPercentage = lr.predict(X_test, Y_test)
print(ErrorPercentage)
y_pred_grad = fs.inverse_transform_Y(y_pred_grad)

#let's see how train set is predicted
y_pred_train, error_for_train = lr.predict(X_train, Y_train)
y_pred_train = fs.inverse_transform_Y(y_pred_train)
print(error_for_train)