Finish Completion Linear.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user