본문 바로가기

상관관계 분석(Correlation Analysis)?

java by 낼스 2019. 1. 29.
## example java
```java
import org.apache.commons.math3.ml.clustering.Cluster;
import org.apache.commons.math3.ml.clustering.Clusterer;
import org.apache.commons.math3.ml.clustering.DoublePoint;
import org.apache.commons.math3.ml.clustering.KMeansPlusPlusClusterer;
import org.apache.commons.math3.stat.correlation.Covariance;
import org.apache.commons.math3.stat.correlation.PearsonsCorrelation;
import org.apache.commons.math3.stat.correlation.SpearmansCorrelation;
import org.apache.commons.math3.stat.regression.SimpleRegression;
import org.junit.Test;

import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class TestClusterer
{
	@Test
	public void test1() throws Exception {
		for (int i=0;i<10;i++) {		
		Clusterer clusterer = new KMeansPlusPlusClusterer(3);
		List list = new ArrayList();
		list.add(new DoublePoint(new double[]{	1	}));
		list.add(new DoublePoint(new double[]{	2	}));
		list.add(new DoublePoint(new double[]{	3	}));
		list.add(new DoublePoint(new double[]{	4	}));
		list.add(new DoublePoint(new double[]{	5	}));
		list.add(new DoublePoint(new double[]{	6	}));
		list.add(new DoublePoint(new double[]{	7	}));
		list.add(new DoublePoint(new double[]{	8	}));
		list.add(new DoublePoint(new double[]{	9	}));
		list.add(new DoublePoint(new double[]{	10	}));
		list.add(new DoublePoint(new double[]{	11	}));
		list.add(new DoublePoint(new double[]{	12	}));
		list.add(new DoublePoint(new double[]{	13	}));
		list.add(new DoublePoint(new double[]{	14	}));
		list.add(new DoublePoint(new double[]{	15	}));
		list.add(new DoublePoint(new double[]{	16	}));
		list.add(new DoublePoint(new double[]{	17	}));
		list.add(new DoublePoint(new double[]{	18	}));
		list.add(new DoublePoint(new double[]{	19	}));
		list.add(new DoublePoint(new double[]{	20	}));
		list.add(new DoublePoint(new double[]{	21	}));
		list.add(new DoublePoint(new double[]{	22	}));
		list.add(new DoublePoint(new double[]{	23	}));
		list.add(new DoublePoint(new double[]{	24	}));
		list.add(new DoublePoint(new double[]{	25	}));
		list.add(new DoublePoint(new double[]{	26	}));
		list.add(new DoublePoint(new double[]{	27	}));
		list.add(new DoublePoint(new double[]{	28	}));
		list.add(new DoublePoint(new double[]{	29	}));
		list.add(new DoublePoint(new double[]{	30	}));

		List> res = clusterer.cluster(list);
			int seq = 0;
			for (Cluster re : res) {
				System.out.print(re.getPoints() + " / ");
				seq++;
				if ( seq % 3 == 0) System.out.print("\n");				
			}
		}
	}

	@Test
	public void test2() throws Exception {
//		for (int i=0;i<10;i++) {
			Clusterer clusterer = new KMeansPlusPlusClusterer(3);
			List list = new ArrayList();

			list.add(new DoovesRawTagDataPoint("1",new double[]{	5	}));
			list.add(new DoovesRawTagDataPoint("2",new double[]{	5	}));
			list.add(new DoovesRawTagDataPoint("3",new double[]{	5	}));
			list.add(new DoovesRawTagDataPoint("4",new double[]{	5	}));
			list.add(new DoovesRawTagDataPoint("5",new double[]{	5	}));
			list.add(new DoovesRawTagDataPoint("6",new double[]{	5	}));
			list.add(new DoovesRawTagDataPoint("7",new double[]{	5	}));
			list.add(new DoovesRawTagDataPoint("8",new double[]{	5	}));
			list.add(new DoovesRawTagDataPoint("9",new double[]{	10	}));
			list.add(new DoovesRawTagDataPoint("10",new double[]{	10	}));
			list.add(new DoovesRawTagDataPoint("11",new double[]{	10	}));
			list.add(new DoovesRawTagDataPoint("12",new double[]{	10	}));
			list.add(new DoovesRawTagDataPoint("13",new double[]{	10	}));
			list.add(new DoovesRawTagDataPoint("14",new double[]{	20	}));
			list.add(new DoovesRawTagDataPoint("15",new double[]{	20	}));
			list.add(new DoovesRawTagDataPoint("16",new double[]{	20	}));
			list.add(new DoovesRawTagDataPoint("17",new double[]{	20	}));
			list.add(new DoovesRawTagDataPoint("18",new double[]{	1	}));
			list.add(new DoovesRawTagDataPoint("19",new double[]{	1	}));
			list.add(new DoovesRawTagDataPoint("20",new double[]{	1	}));
			list.add(new DoovesRawTagDataPoint("21",new double[]{	1	}));
			list.add(new DoovesRawTagDataPoint("22",new double[]{	50	}));
			list.add(new DoovesRawTagDataPoint("23",new double[]{	50	}));
			list.add(new DoovesRawTagDataPoint("24",new double[]{	50	}));
			list.add(new DoovesRawTagDataPoint("25",new double[]{	50	}));
			list.add(new DoovesRawTagDataPoint("26",new double[]{	30	}));
			list.add(new DoovesRawTagDataPoint("27",new double[]{	30	}));
			list.add(new DoovesRawTagDataPoint("28",new double[]{	30	}));
			list.add(new DoovesRawTagDataPoint("29",new double[]{	30	}));

			List> res = clusterer.cluster(list);
			int seq = 0;
			for (Cluster re : res) {
//				List item = (ArrayList) re.getPoints();
				System.out.print("\nseq : " + seq + "\n");				
				for (DoovesRawTagDataPoint item : re.getPoints()) {
					System.out.print(item.getPoint()[0] + " / " + item.getKey() + ", " );					
				}
				seq++;
				if ( seq % 3 == 0) System.out.print("\n");
			}
//		}
	}

	@Test
	public void test3() throws Exception {
		SimpleRegression sr = new SimpleRegression();
		// Add data points 		
		sr.addData(91.39294, 107.5043);
		sr.addData(91.39294, 107.5043);
		sr.addData(90.83738, 107.5043);
		sr.addData(90.83738, 107.5043);
		sr.addData(90.83738, 107.5043);
		sr.addData(90.83738, 107.5043);
		sr.addData(90.83738, 107.5043);
		sr.addData(90.83738, 107.5043);
		sr.addData(90.83738, 107.5043);

		sr.addData(1, 1);
		sr.addData(2, 2.6);
		sr.addData(3, 3.2);
		sr.addData(4, 4);
		sr.addData(5, 5);

		NumberFormat format = NumberFormat.getInstance();
		// Print the value of y when line intersects the y axis
		System.out.println("Intercept: " + format.format(sr.getIntercept()));
		// Print the number of data points
		System.out.println("R: " + sr.getR());
		System.out.println("N: " + sr.getN());
		// Print the Slope and the Slop Confidence
		System.out.println("Slope: " + format.format(sr.getSlope()));
		System.out.println("Slope Confidence: " + format.format(sr.getSlopeConfidenceInterval()));
		// Print RSquare a measure of relatedness
		System.out.println("RSquare: " + (sr.getRSquare()));
		System.out.println("RSquare: " + format.format(sr.getRSquare()));
		double[] x = new double[] {1,2,3,4,5};
		double[] y = new double[] {1,0,8,0,5};
		System.out.println("x: " + Arrays.toString(x));
		System.out.println("y: " + Arrays.toString(y));
		System.out.println("Covariance: " + new Covariance().covariance(x,y));
		System.out.println("Pearson's Correlation: " + new PearsonsCorrelation().correlation(x,y));
		System.out.println("Spearman's Correlation: " + new SpearmansCorrelation().correlation(x,y));
//		System.out.println("Kendall's Correlation: " + new KendallsCorrelation().correlation(x,y));
	}

	@Test
	public void arrayStream() {
		String[] array = {"a", "b", "c", "d", "e"};

		//Arrays.stream
		Stream stream1 = Arrays.stream(array);


		final int[] idx = {0};
		stream1.forEach(
				measureUnit -> {
					idx[0]++;
				}
		);

		System.out.println("idx : " + idx[0]);
//		stream1.forEach(x -> System.out.println(x));

		//Stream.of
		Stream stream2 = Stream.of(array);
		stream2.forEach(x -> System.out.println(x));
	}

}
```

# https://www.javatips.net/api/org.apache.commons.math3.stat.regression.simpleregression
## 수학기호 참고
  - http://freesearch.pe.kr/archives/707
  - https://librewiki.net/wiki/수학_기호
  > σ : 소문자 시그마는 표준편차를 나타내는 기호
    Σ : 대문자 시그마는 아래첨자와 위첨자를 기입하여 합에 관한 기호로 사용
    i : 아이. 허수단위. 제곱해서 -1이 되는 수입니다.
    cosΘ : 코사인쎄타인듯 보입니다. cosθ를 쓴거 맞는지요?
    (하이퍼블릭코사인-쌍곡삼각함수중 하나로 수학에서는 거의 cosh를 사용합니다)
    √ – 제곱근 또는 루트라고 읽습니다.
    ㅠ – 파이 : 정확한 모양을 모르겠는데, 소문자 파이는 원주율을 나타내는 기호로 3.141592… 값을 가지며, 대문자 파이는 확률에서 중복순열을 나타내거나 위첨자 아래첨자와 함께 쓰는 경우 곱에 관한 기호가 됩니다.
    ∫ – 인테그랄 : 적분기호
    ∬ – 중적분 기호로, 적분을 두번 하라는 것입니다.
    V。 – ? 뭡니까 이건? 혹시 V만 쓴 것이라면 분산을 나타내는 것이긴 한데… 이건 잘 모르겠군요
    ± – 플러스마이너스 : 플러스 또는 마이너스 라는 뜻
    × – 곱하기
    ÷ – 나누기
    ∏ – 대문자 파이군요.. 위에서 설명드렸고..
    ≠ – 같지앉다
    ∴ – 따라서 또는 그러므로
    ∵ – 왜냐하면
    ≒ – 약: 근사값을 쓸때 또는 양쪽 값이 거의 비슷할때 사용
    ≤ – (왼쪽이 오른쪽보다) 작거나 같다
    ≥ – (왼쪽이 오른쪽보다) 크거나 같다
    < – (왼쪽이 오른쪽보다) 작다
    > – (왼쪽이 오른쪽보다) 크다
    dθ – 디쎄타 – 미분에서 사용되는 기호입니다.
    ≡ – 합동 또는 모듈로(mod)를 나타내는 기호인데… 아마 질문하신 님이 알파, 베타를 읽을 줄 모르신다면,, 나이가 어리신듯 한데, 만약 십대시라면, 그냥 도형의 합동 기호라고 알아두는게 좋을 듯 합니다.
    ∈ – (왼쪽이 오른쪽의) 원소이다.
    ∋ – (오른쪽이 왼쪽의) 원소이다.
    ⊂ – (왼쪽이 오른쪽의) 부분집합이다. (오른쪽 집합이 왼쪽 집합을) 포함한다.
    ⊃ – (오른쪽이 왼쪽의) 부분집합이다. (오른쪽 집합이 왼쪽 집합을) 포함한다.
    ∪ – 합집합
    ∩ – 교집합
    ∀ – 임의의
    ∃ – 존재한다. exist.

  > Å – 옴스트롱 또는 옴고스트롱. 10의 -10승인가 -8승인가… 뭐 그런건데, 수학에서 쓰이는 건 여태 단 한번도 본 적이 없음.
    μ(마이크로) – 10의 -6승. 즉, 1/1000000 의 크기.
    ℉ – 화씨. 온도 단위
    ℃ – 섭씨. 역시 온도의 단위. 다들 아시죠..
    ㎛(마이크로미터) ㎝(센티미터) – 길이의 단위
    ㎟(제곱밀리미터)㎩ ㎢(제곱키로미터) – 넓이의 단위
    ㎣(세제곱밀리미터) ㎤(세제곱 센티미터) ㎥(세제곱 미터) ㎦(세제곱 키로미터) – 부피의 단위.
    ㏈ – 데시벨. 소리의 단위
    ㎲ -마이크로초. 시간의 단위
    ㏘ -뭐라고 쓴건지 잘 모르겠는데.. pm이라고 쓴건가요? 그렇다면 피코미터라고, 길이의 단위인데..

  > 집합기호 : { }, ⊂,⊃,⊆,⊇,
    명제기호 : ∧,∨,←,→,⇔,⇒,⇒
    도형기호 : ∠(각),∽(닮음),≡(합동),?(평행),⊥(수직)
    대소관계 : <, >, ≤,≥,
    각종괄호 : (,),{,},[,]
    적분기호 : ∫, ∬, ∮
    미분기호 : ∂(편미분)
    삼각함수 : sin, cos, tan, sec, cosec, cot, sinh, cosh, tanh, sech, cosech, coth, 각각의 함수에 역함수 기호(^-1)를 붙이면 arc삼각함수(=역삼각함수)가 된다.
    기타 : ∞(무한대), !(팩토리얼,factorial), 기호가 표시는 안됩니다만.. 세제곱근호, 네제곱근호, 선적분, 면적분, 벡터기호, 등등 여러가지가 있습니다.

'java' 카테고리의 다른 글

Adapter Design Pattern  (0) 2019.01.30
Spring Boot internationalization  (0) 2019.01.30
kmeans  (0) 2019.01.29
spring_sqlmap_selectkey  (0) 2019.01.29
String to Date format string For java  (0) 2015.12.28

댓글