precipitation-pl/run2.py
2022-05-22 12:53:20 +02:00

62 lines
2.1 KiB
Python

import pandas as pd
import tensorflow.keras
from sklearn.linear_model import LinearRegression
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
in_columns = ["id_stacji", "nazwa_stacji", "typ_zbioru", "rok", "miesiąc"]
df = pd.read_csv("train/in.tsv", names=in_columns, sep="\t")
df_test = pd.read_csv("dev-0/in.tsv", names=in_columns, sep="\t")
df = pd.concat([df, df_test])
df = df.drop(["nazwa_stacji", "typ_zbioru"], axis=1)
x = pd.get_dummies(df, columns=["id_stacji", "rok", "miesiąc"])
x = x.iloc[:-600]
y = pd.read_csv("train/expected.tsv", sep="\t", names=["rainfall"])
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(2, interaction_only=True)
df = poly.fit_transform(x)
pol_reg = LinearRegression()
pol_reg.fit(df, y)
# model = Sequential(
# [
# Dense(512, activation="relu", input_dim=73, kernel_regularizer="l2"),
# tensorflow.keras.layers.BatchNormalization(),
# Dense(512 // 2, activation="relu", kernel_regularizer="l2"),
# tensorflow.keras.layers.BatchNormalization(),
# Dense(512 // 4, activation="relu", kernel_regularizer="l2"),
# tensorflow.keras.layers.BatchNormalization(),
# Dense(512 // 8, activation="relu", kernel_regularizer="l2"),
# tensorflow.keras.layers.BatchNormalization(),
# Dense(32, activation="relu", kernel_regularizer="l2"),
# tensorflow.keras.layers.BatchNormalization(),
# Dense(1),
# ]
# )
#
# model.compile(
# loss="mean_squared_error", optimizer="adam", metrics=["mean_squared_error"]
# )
# model.fit(x, y, epochs=100)
x_test = pd.read_csv("test-A/in.tsv", sep="\t", names=in_columns)
df_train = pd.read_csv("train/in.tsv", names=in_columns, sep="\t")
x_test = pd.concat([x_test, df_train])
x_test = x_test.drop(["nazwa_stacji", "typ_zbioru"], axis=1)
x_test = pd.get_dummies(x_test, columns=["id_stacji", "rok", "miesiąc"])
x_test = x_test.iloc[:-8760]
poly = PolynomialFeatures(2, interaction_only=True)
x_test2 = poly.fit_transform(x_test)
pred = pol_reg.predict(x_test2)
out = pd.DataFrame(pred)
out.to_csv("test-A/out.tsv", sep="\t", header=False, index=False)