Finish Completion Linear.

This commit is contained in:
2026-04-08 10:32:11 +02:00
parent d0ae9baed6
commit 1c264a0860
65 changed files with 3708 additions and 298 deletions

View File

@@ -64,4 +64,61 @@ public class Completion {
return mean / i;
}
public static <T,V extends Number> HashSet<T> completeColumnsLinear(HashSet<T> list, Function<T,V> getX, Function<T,V> getY, BiConsumer<T,V> setY ){
double meanX = calculateMean(list, getX);
double meanY = calculateMean(list, getY);
double a = calculateLinearA(list,getX,getY,meanX,meanY);
double b = calculateLinearB(meanX,meanY,a);
for(T item : list){
if( getY.apply(item) == null && getX.apply(item) != null ){
Double value = a * getX.apply(item).doubleValue() + b;
setY.accept( item, (V) value );
}
}
return list;
}
/**
* Permet de calculer le coefficient A de notre regression linéaire.
* @param list
* @param getX
* @param getY
* @param meanX
* @param meanY
* @return
* @param <T>
* @param <V>
*/
public static <T,V extends Number> double calculateLinearA(
HashSet<T> list,
Function<T,V> getX,
Function<T,V> getY,
double meanX,
double meanY
){
double numerateur = 0.0;
double denominateur = 0.0;
for( T item : list ){
if( getX.apply(item) == null || getY.apply(item) == null ){
continue;
}
numerateur += ( getX.apply(item).doubleValue() - meanX ) * ( getY.apply(item).doubleValue() - meanY );
denominateur += ( getX.apply(item).doubleValue() - meanX ) * ( getX.apply(item).doubleValue() - meanX );
}
return numerateur / denominateur;
}
public static double calculateLinearB(
double meanX,
double meanY,
double valueA
){
return meanY - valueA * meanX;
}
}