avram48 commited on
Commit
6ddbd04
·
verified ·
1 Parent(s): 9b308fa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -30
app.py CHANGED
@@ -1,12 +1,10 @@
1
  import numpy as np
2
  import pandas as pd
3
  import tensorflow as tf
4
- from sklearn.preprocessing import LabelEncoder, OneHotEncoder, StandardScaler
5
  from sklearn.model_selection import train_test_split
6
- from sklearn.preprocessing import MinMaxScaler
7
  from keras.models import Sequential
8
- from keras.layers import LSTM, Dense, Dropout
9
- from keras.optimizers import Adam
10
 
11
  data = pd.read_csv('cars_raw.csv')
12
 
@@ -16,57 +14,54 @@ data['Model'] = le.fit_transform(data['Model'])
16
 
17
  data = data[data['Price'] != 'Not Priced']
18
 
19
- scaler = MinMaxScaler()
20
  data["Price"] = data["Price"].str.replace("$", "")
21
  data["Price"] = data["Price"].str.replace(",", "").astype(float)
22
 
 
23
  data['Price'] = scaler.fit_transform(data['Price'].values.reshape(-1, 1))
24
 
25
  data = data.dropna()
26
- le = LabelEncoder()
27
  for col in data.select_dtypes(include=['category', 'object']).columns:
28
  data[col] = le.fit_transform(data[col])
29
 
30
- scaler = MinMaxScaler()
31
  for col in data.select_dtypes(include=['number']).columns:
32
  data[col] = scaler.fit_transform(data[col].values.reshape(-1, 1))
33
 
 
34
  data = data.drop(columns=["Mileage", "SellerType", "VIN", "Stock#", "Drivetrain", "SellerName", "ConsumerReviews", "ExteriorStylingRating", "State", "Zipcode", "DealType"])
35
  data_df = pd.DataFrame(data)
36
 
37
  X = data.drop('Price', axis=1)
38
  y = data['Price']
39
-
40
  X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
41
 
42
-
43
  model = Sequential()
44
- model.add(Dense(128, input_shape=(X_train.shape[1], 1)))
45
  model.add(Dropout(0.3))
46
- model.add(Dense(64,))
47
  model.add(Dropout(0.3))
48
  model.add(Dense(1))
49
 
50
  model.compile(optimizer='adam', loss='mean_squared_error')
51
  model.fit(X_train, y_train, epochs=100, batch_size=32, validation_data=(X_test, y_test))
52
 
 
53
  test_loss = model.evaluate(X_test, y_test)
54
  print(f'Test loss (MSE): {test_loss}')
55
 
56
  import gradio as gr
57
 
58
  def predict_car_price(Year, Make, Model, FuelType, Engine):
59
-
60
- car_data = []
61
- car_data.append({
62
- "Year": int(Year),
63
- "Make": Make,
64
- "Model": Model,
65
- "FuelType": FuelType,
66
- "Engine": Engine
67
- })
68
-
69
- car_data_df = pd.DataFrame(car_data)
70
  result_data = pd.read_csv('cars_raw.csv')
71
  result_data_df = pd.DataFrame(result_data)
72
 
@@ -86,17 +81,22 @@ def predict_car_price(Year, Make, Model, FuelType, Engine):
86
  prediction = model.predict(result_df)
87
 
88
  inverted_prediction = scaler.inverse_transform(
89
- prediction.reshape(-1, 1)
90
- )
91
  predicted_price = inverted_prediction[0][0]
92
 
93
  return predicted_price
94
 
95
- demo = gr.Interface(
96
  fn=predict_car_price,
97
  inputs=[
98
- gr.inputs.Slider(label="Year", min=1990, max=2023, step=1),
99
- gr.inputs.Dropdown(label="Make", choices=["Acura", "Alfa Romeo", "Aston Martin", "Audi", "Bentley", "BMW", "Buick", "Cadillac", "Chevrolet", "Chrysler", "Dodge", "Ferrari", "Fiat", "Ford", "Genesis", "GMC", "Honda", "Hyundai", "Infiniti", "Jaguar", "Jeep", "Kia", "Lamborghini", "Land Rover", "Lexus", "Lincoln", "Lotus", "Maserati", "Mazda", "McLaren", "Mercedes-Benz", "Mini", "Mitsubishi", "Nissan", "Oldsmobile", "Peugeot", "Plymouth", "Pontiac", "Porsche", "Ram", "Rolls-Royce", "Saab", "Saturn", "Scion", "smart", "Subaru", "Suzuki", "Tesla", "Toyota", "Volkswagen", "Volvo"]),
100
- gr.inputs.Textbox(label="Model"),
101
- gr.i])
102
- iface.launch(share=True)
 
 
 
 
 
 
1
  import numpy as np
2
  import pandas as pd
3
  import tensorflow as tf
4
+ from sklearn.preprocessing import LabelEncoder, MinMaxScaler
5
  from sklearn.model_selection import train_test_split
 
6
  from keras.models import Sequential
7
+ from keras.layers import Dense, Dropout
 
8
 
9
  data = pd.read_csv('cars_raw.csv')
10
 
 
14
 
15
  data = data[data['Price'] != 'Not Priced']
16
 
 
17
  data["Price"] = data["Price"].str.replace("$", "")
18
  data["Price"] = data["Price"].str.replace(",", "").astype(float)
19
 
20
+ scaler = MinMaxScaler()
21
  data['Price'] = scaler.fit_transform(data['Price'].values.reshape(-1, 1))
22
 
23
  data = data.dropna()
24
+
25
  for col in data.select_dtypes(include=['category', 'object']).columns:
26
  data[col] = le.fit_transform(data[col])
27
 
 
28
  for col in data.select_dtypes(include=['number']).columns:
29
  data[col] = scaler.fit_transform(data[col].values.reshape(-1, 1))
30
 
31
+ # Удаление ненужных колонок
32
  data = data.drop(columns=["Mileage", "SellerType", "VIN", "Stock#", "Drivetrain", "SellerName", "ConsumerReviews", "ExteriorStylingRating", "State", "Zipcode", "DealType"])
33
  data_df = pd.DataFrame(data)
34
 
35
  X = data.drop('Price', axis=1)
36
  y = data['Price']
 
37
  X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
38
 
 
39
  model = Sequential()
40
+ model.add(Dense(128, activation='relu', input_shape=(X_train.shape[1],)))
41
  model.add(Dropout(0.3))
42
+ model.add(Dense(64, activation='relu'))
43
  model.add(Dropout(0.3))
44
  model.add(Dense(1))
45
 
46
  model.compile(optimizer='adam', loss='mean_squared_error')
47
  model.fit(X_train, y_train, epochs=100, batch_size=32, validation_data=(X_test, y_test))
48
 
49
+ # Оценка модели
50
  test_loss = model.evaluate(X_test, y_test)
51
  print(f'Test loss (MSE): {test_loss}')
52
 
53
  import gradio as gr
54
 
55
  def predict_car_price(Year, Make, Model, FuelType, Engine):
56
+ car_data = {
57
+ "Year": int(Year),
58
+ "Make": Make,
59
+ "Model": Model,
60
+ "FuelType": FuelType,
61
+ "Engine": Engine
62
+ }
63
+
64
+ car_data_df = pd.DataFrame([car_data])
 
 
65
  result_data = pd.read_csv('cars_raw.csv')
66
  result_data_df = pd.DataFrame(result_data)
67
 
 
81
  prediction = model.predict(result_df)
82
 
83
  inverted_prediction = scaler.inverse_transform(
84
+ prediction.reshape(-1, 1)
85
+ )
86
  predicted_price = inverted_prediction[0][0]
87
 
88
  return predicted_price
89
 
90
+ iface = gr.Interface(
91
  fn=predict_car_price,
92
  inputs=[
93
+ gr.Slider(label="Year", minimum=1990, maximum=2023, step=1),
94
+ gr.Dropdown(label="Make", choices=["Acura", "Alfa Romeo", "Aston Martin", "Audi", "Bentley", "BMW", "Buick", "Cadillac", "Chevrolet", "Chrysler", "Dodge", "Ferrari", "Fiat", "Ford", "Genesis", "GMC", "Honda", "Hyundai", "Infiniti", "Jaguar", "Jeep", "Kia", "Lamborghini", "Land Rover", "Lexus", "Lincoln", "Lotus", "Maserati", "Mazda", "McLaren", "Mercedes-Benz", "Mini", "Mitsubishi", "Nissan", "Oldsmobile", "Peugeot", "Plymouth", "Pontiac", "Porsche", "Ram", "Rolls-Royce", "Saab", "Saturn", "Scion", "smart", "Subaru", "Suzuki", "Tesla", "Toyota", "Volkswagen", "Volvo"]),
95
+ gr.Textbox(label="Model"),
96
+ gr.Dropdown(label="Fuel Type", choices=["Gasoline", "Diesel", "Electric", "Hybrid"]),
97
+ gr.Textbox(label="Engine")
98
+ ],
99
+ outputs="number"
100
+ )
101
+
102
+ iface.launch(share=True)