import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import MultiLabelBinarizer from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Embedding, Flatten from tensorflow.keras.optimizers import Adam # Load the dataset from the CSV file data = pd.read_csv('data.csv', on_bad_lines='skip', engine='python') # Prepare the data X = data[['movie title', 'User Rating', 'Generes', 'Plot Kyeword', 'Director', 'Top 5 Casts', 'Writer', 'year']] y = data['Rating'] # Preprocess the data # Convert the categorical columns into numerical representations mlb = MultiLabelBinarizer() X['Generes'] = mlb.fit_transform(X['Generes']).tolist() X['Plot Kyeword'] = mlb.fit_transform(X['Plot Kyeword']).tolist() X['Top 5 Casts'] = mlb.fit_transform(X['Top 5 Casts'].astype(str)).tolist() # Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Create the neural network model model = Sequential() model.add(Embedding(input_dim=len(mlb.classes_), output_dim=10, input_length=X.shape[1])) model.add(Flatten()) model.add(Dense(32, activation='relu')) model.add(Dense(1)) # Compile the model model.compile(optimizer=Adam(), loss='mse') # Train the model model.fit(X_train, y_train, batch_size=64, epochs=10, validation_data=(X_test, y_test)) # Evaluate the model mse = model.evaluate(X_test, y_test) print("Mean Squared Error:", mse)