from random import random
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import LeaveOneOut
from sklearn.ensemble import RandomForestClassifier
import numpy as np
numberOfTest = 8
numberOfFeature = 5
numberOfSamplePerEachFeature = 450
#Create a 3D list to store the data needed for learning and experimentation. In this 3D list, there are only attributes and values for each attribute, and there is no value for the target attribute.**
dataForLearning = [[[0.0 for i in range(numberOfSamplePerEachFeature)] for j in range(numberOfFeature)] for k in range(numberOfTest)]
# Create lists to store target values that will be used for learning and testing.**
targetValue = [0.0 for i in range(numberOfTest)]
# Here the data set is initialized ===============================**
for i in range(numberOfTest):
for j in range(numberOfFeature):
for k in range(numberOfSamplePerEachFeature):
dataForLearning[i][j][k] = random()
for i in range(numberOfTest):
targetValue[i] = random()
# =========================================================**
class SAMPLES:
def __init__(self, k=0, value=0.0):
self.object = np.zeros(numberOfSamplePerEachFeature)
self.object[k] = value
def __repr__(self):
return self.object
# In order to convert a 3D list to a 2D list, the third dimension is actually an object, each object containing an array of data. This was done because the library for the random forest classifier was giving a 3D entry error.
temp = [[SAMPLES() for i in range(numberOfFeature)] for j in range(numberOfTest)]
for i in range(numberOfTest):
for j in range(numberOfFeature):
for k in range(numberOfSamplePerEachFeature):
temp[i][j].object[k] = dataForLearning[i][j][k]
X = np.array(temp)
Y = np.array(targetValue)
Y_pred = np.zeros(len(targetValue))
oneOfAll = LeaveOneOut()
oneOfAll.get_n_splits(X)
for train_index, test_index in oneOfAll.split(X):
X_train, X_test = X[train_index], X[test_index]
Y_train, Y_test = Y[train_index], Y[test_index]
# define the model
model = RandomForestClassifier()
# fit the model on the whole dataset
model.fit(X_train, Y_train)
Y_pred[test_index] = model.predict(X_test)
print(mean_squared_error(Y, Y_pred))
full error message:
Traceback (most recent call last): File "G:\machineLearning.py", line 60, in
model.fit(X_train, Y_train)
File "C:\Users\mehran\AppData\Local\Programs\Python\Python39\lib\site-packages\sklearn\ensemble_forest.py", line 327, in fit
X, y = self._validate_data(
File "C:\Users\mehran\AppData\Local\Programs\Python\Python39\lib\site-packages\sklearn\base.py", line 581, in _validate_data
X, y = check_X_y(X, y, **check_params)
File "C:\Users\mehran\AppData\Local\Programs\Python\Python39\lib\site-packages\sklearn\utils\validation.py", line 964, in check_X_y
X = check_array(
File "C:\Users\mehran\AppData\Local\Programs\Python\Python39\lib\site-packages\sklearn\utils\validation.py", line 746, in check_array
array = np.asarray(array, order=order, dtype=dtype)
TypeError: float() argument must be a string or a number, not 'SAMPLES'