파이썬 코드 (Test) C++로 변환
!pip install m2cgen
from sklearn.ensemble import RandomForestClassifier
import m2cgen as m2c
import numpy as np
# 입력 상태값 (예: 3개의 피처)
X = np.array([
[0.1, 0.5, 0.2],
[0.7, 0.8, 0.1],
[0.3, 0.2, 0.9],
])
# 정답 (정수형)
y = [42, 8, 120]
# 모델 학습
model = RandomForestClassifier(n_estimators=10, max_depth=5)
model.fit(X, y)
# 모델을 C++ 코드로 export
cpp_code = m2c.export_to_c(model)
# Colab 상에서 파일로 저장
with open("/content/ActionPredictor.cpp", "w") as f:
f.write(cpp_code)
from google.colab import files
files.download("/content/ActionPredictor.cpp")
void add_vectors(double *v1, double *v2, int size, double *result) {
for(int i = 0; i < size; ++i)
result[i] = v1[i] + v2[i];
}
void mul_vector_number(double *v1, double num, int size, double *result) {
for(int i = 0; i < size; ++i)
result[i] = v1[i] * num;
}
void score(double * input, double * output) {
double var0[3];
double var1[3];
double var2[3];
double var3[3];
double var4[3];
double var5[3];
double var6[3];
double var7[3];
double var8[3];
double var9[3];
double var10[3];
if (input[1] <= 0.6500000059604645) {
memcpy(var10, (double[]){0.0, 1.0, 0.0}, 3 * sizeof(double));
} else {
memcpy(var10, (double[]){1.0, 0.0, 0.0}, 3 * sizeof(double));
}
double var11[3];
if (input[1] <= 0.6500000059604645) {
memcpy(var11, (double[]){0.0, 1.0, 0.0}, 3 * sizeof(double));
} else {
memcpy(var11, (double[]){1.0, 0.0, 0.0}, 3 * sizeof(double));
}
add_vectors(var10, var11, 3, var9);
double var12[3];
if (input[0] <= 0.20000000670552254) {
memcpy(var12, (double[]){0.0, 1.0, 0.0}, 3 * sizeof(double));
} else {
memcpy(var12, (double[]){0.0, 0.0, 1.0}, 3 * sizeof(double));
}
add_vectors(var9, var12, 3, var8);
double var13[3];
if (input[2] <= 0.5499999895691872) {
memcpy(var13, (double[]){0.0, 1.0, 0.0}, 3 * sizeof(double));
} else {
memcpy(var13, (double[]){0.0, 0.0, 1.0}, 3 * sizeof(double));
}
add_vectors(var8, var13, 3, var7);
double var14[3];
if (input[0] <= 0.20000000670552254) {
memcpy(var14, (double[]){0.0, 1.0, 0.0}, 3 * sizeof(double));
} else {
if (input[2] <= 0.4999999888241291) {
memcpy(var14, (double[]){1.0, 0.0, 0.0}, 3 * sizeof(double));
} else {
memcpy(var14, (double[]){0.0, 0.0, 1.0}, 3 * sizeof(double));
}
}
add_vectors(var7, var14, 3, var6);
double var15[3];
if (input[1] <= 0.5000000074505806) {
memcpy(var15, (double[]){0.0, 0.0, 1.0}, 3 * sizeof(double));
} else {
memcpy(var15, (double[]){1.0, 0.0, 0.0}, 3 * sizeof(double));
}
add_vectors(var6, var15, 3, var5);
double var16[3];
if (input[0] <= 0.3999999947845936) {
memcpy(var16, (double[]){0.0, 1.0, 0.0}, 3 * sizeof(double));
} else {
memcpy(var16, (double[]){1.0, 0.0, 0.0}, 3 * sizeof(double));
}
add_vectors(var5, var16, 3, var4);
double var17[3];
if (input[0] <= 0.20000000670552254) {
memcpy(var17, (double[]){0.0, 1.0, 0.0}, 3 * sizeof(double));
} else {
memcpy(var17, (double[]){0.0, 0.0, 1.0}, 3 * sizeof(double));
}
add_vectors(var4, var17, 3, var3);
double var18[3];
if (input[2] <= 0.15000000223517418) {
memcpy(var18, (double[]){1.0, 0.0, 0.0}, 3 * sizeof(double));
} else {
if (input[0] <= 0.20000000670552254) {
memcpy(var18, (double[]){0.0, 1.0, 0.0}, 3 * sizeof(double));
} else {
memcpy(var18, (double[]){0.0, 0.0, 1.0}, 3 * sizeof(double));
}
}
add_vectors(var3, var18, 3, var2);
double var19[3];
if (input[2] <= 0.4999999888241291) {
memcpy(var19, (double[]){1.0, 0.0, 0.0}, 3 * sizeof(double));
} else {
memcpy(var19, (double[]){0.0, 0.0, 1.0}, 3 * sizeof(double));
}
add_vectors(var2, var19, 3, var1);
mul_vector_number(var1, 0.1, 3, var0);
memcpy(output, var0, 3 * sizeof(double));
}
'프로그래밍 > 언리얼엔진' 카테고리의 다른 글
| 그래픽스 공부 (0) | 2025.04.26 |
|---|---|
| 프로파일링과 최적화 작업 (0) | 2025.04.12 |
| 언리얼 공부 노트 (0) | 2025.02.22 |
| (작업) 홀로그램 만들어보기 (1) | 2024.11.09 |
| [언리얼 기초] 언리얼 서버 시스템 개념 (3) | 2024.10.18 |