120 만행 x 16 열
주변 온도에 대한 열은 그래프 작성기에서 상자 위와 위스커 위쪽 꼬리 위로 특이 치로 분류 된 많은 관측치 (일별)를 보여줍니다. 이것은 불행한 일이지만, 이동하는 차량에 주변 온도 측정 프로브를 배치했기 때문일 수 있습니다.
목표는 신경망을 사용하여 데이터를 모델링하여 위젯 A와 위젯 B의 성능을 비교하기 전에 주변 온도 이상 치를 갖는 데이터 행을 올바르게 식별하고 억제하는 것입니다.
여기에서 몇 가지 스레드를 읽었지만 솔루션과 비슷한 질문을 찾을 수 없습니다.
쉬운 peezy
특이 치 상자를 가져와
커서를 모든 특이점 위로 드래그하면 데이터 테이블에서 모든 특이점이 선택됩니다.
이제 데이터 테이블의 RowState 열로 이동하여 선택된 행 중 하나로 이동하십시오.
선택한 행을 마우스로 가리키고 마우스 오른쪽 버튼을 클릭 한 후 "제외"를 선택하십시오.
선택한 모든 행이 제외됩니다
숨기기 및 제외를 선택할 수 있습니다
안녕하세요 4
변수 행의 그룹 중 하나 이상인 경우 행을 표시하는 스크립트를 한 번 작성했습니다. 한 번 열과 두 열의 온도에 다른 날을 포함하도록 업데이트했습니다. 각 원래 열에 대한 특이 치를 나타내는 새로운 이진 열을 생성하고 변수에 대한 관측치가 특이 치인지를 나타내는 새 이진 열을 생성합니다.
작동하는지 알려주세요.
론
Names Default To Here( 1 );
// make a sample data table
dt = New Table( "Data",
add rows( 10000 ),
New Column( "it", Numeric, Ordinal, Format( "Best", 8 ), Formula( Row() ) ),
New Column( "Day", Numeric, Ordinal, Format( "Best", 8 ), formula( Random Integer( 110 ) ) ),
New Column( "temp1", Numeric, Continues, Format( "Best", 8 ), formula( Random Lognormal( :Day / 10, 5 ) ) ),
New Column( "temp2", Numeric, Continues, Format( "Best", 8 ), formula( Random Lognormal( :Day / 10, 5 ) ) ),
New Column( "Out",
Numeric,
Ordinal,
Format( "Best", 8 ),
Set Property( "Value Colors", {0 = -13977687, 1 = -4222943} ),
Color Cell by Value,
formula( 0 )
),
New Column( "Outtemp1",
Numeric,
Ordinal,
Format( "Best", 8 ),
Set Property( "Value Colors", {0 = -13977687, 1 = -4222943} ),
Color Cell by Value,
formula( 0 )
),
New Column( "Outtemp2",
Numeric,
Ordinal,
Format( "Best", 8 ),
Set Property( "Value Colors", {0 = -13977687, 1 = -4222943} ),
Color Cell by Value,
formula( 0 )
),
);
dt << run formulas;
Column( dt, "it" ) << delete formula;
Column( dt, "Day" ) << delete formula;
Column( dt, "temp1" ) << delete formula;
Column( dt, "temp2" ) << delete formula;
Column( dt, "Out" ) << delete formula;
Column( dt, "Outtemp1" ) << delete formula;
Column( dt, "Outtemp2" ) << delete formula;
// now we get to work
// make a list of days
byvarlist = Associative Array( dt:Day ) << get keys;
// make a list of columns
cols = dt << get column names( Continuous ); //List all Numeric columns
// loop through the days
For( i = 1, i <= N Items( byvarlist ), i++,
// select each Day
dt << select where( dt:Day == byvarlist[i] );
// subset each Day
subdt = dt << Subset( Selected Rows( 1 ) );
// clear selection for smooth workflow
dt << clear select;
// fined outliers in each variable within each Day
For( ii = 1, ii <= N Items( cols ), ii++,
out = Eval(
Parse(
"subdt << get rows where(
subdt:" || Char( cols[ii] ) || " > Col Quantile( subdt:" || Char( cols[ii] ) ||
", 0.75 ) + 1.5 * (Col Quantile( subdt:" || Char( cols[ii] ) || ", 0.75 ) - Col Quantile( subdt:" || Char( cols[ii] ) ||
", 0.25 )) | subdt:" || Char( cols[ii] ) || " <
Col Quantile( subdt:" || Char( cols[ii] ) ||
", 0.25 ) - 1.5 * (Col Quantile( subdt:" || Char( cols[ii] ) || ", 0.75 ) - Col Quantile( subdt:" || Char( cols[ii] ) ||
", 0.25 )));"
)
)`;
Eval( Parse( "column (subdt, \!"Out" || Char( cols[ii] || "\!" )[" || Char( out ) || "] = 1;" ) ) );
// also indicate the global outlier
Column( subdt, "Out" )[out] = 1;
//wait (0.00001);
);
// update original data table with new information for the Day
subdt << delete columns( "Day" );
subdt << delete columns( cols );
dt << Update( With( subdt ), Match Columns( :it = :it ) );
Close( subdt, No Save );
//Wait( 0.00001 );
);
dt << color by column( :Out );
조금 다른 접근법을 제안하고 싶습니다.
다음과 같이 Explore Outliers 플랫폼을 스크립팅하십시오.
dt=current data table();<BR />obj=dt<<EXPLORE outliers=""></EXPLORE>
이를 설정하려면 이상치 탐색 플랫폼을 사용하여 조건을 정리 한 다음 스크립트를 스크립트 창에 저장하십시오.
당신의 조건을 나의 것으로 대치하면 좋습니다.
또한 특이 치를 선택한 다음 선택을 반전시킨 다음 유지하려는 데이터의 하위 집합을 만들 수도 있습니다.