日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

java gsp_GSP序列模式分析算法

發(fā)布時(shí)間:2024/8/1 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java gsp_GSP序列模式分析算法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

介紹

GSP算法是序列模式挖掘算法的一種,他是一種類Apriori的一種,整個(gè)過程與Apriori算法比較類似,不過在細(xì)節(jié)上會(huì)略有不同,在下面的描述中,將會(huì)有所描述。GSP在原有的頻繁模式定義的概念下,增加了3個(gè)的概念。

1、加入時(shí)間約束min_gap,max_gap,要求原來的連續(xù)變?yōu)橹灰獫M足在規(guī)定的min_gap到max_gap之間即可。

2、加入time_windows_size,只要在windows_size內(nèi)的item,都可以被認(rèn)為是同一ItemSet。

3、加入分類標(biāo)準(zhǔn)。

以上3點(diǎn)新的中的第一條特征將會(huì)在后面的算法中著重展現(xiàn)。

算法原理

1、根據(jù)所輸入的序列,找出所有的單項(xiàng)集,即1頻繁模式,這里會(huì)經(jīng)過最小支持度閾值的判斷。

2、根據(jù)1頻繁模式進(jìn)行連接運(yùn)算,產(chǎn)生2頻繁模式,這里會(huì)有進(jìn)行最小閾值的判斷。

3、根據(jù)2頻繁模式連接產(chǎn)生3頻繁模式,會(huì)經(jīng)過最小支持度判斷和剪枝操作,剪枝操作的原理在于判斷他的所有子集是否也全是頻繁模式。

4、3頻繁模式不斷的挖掘知道不能夠產(chǎn)生出候選集為止。

連接操作的原理

2個(gè)序列,全部變?yōu)閕tem列表的形式,如果a序列去掉第1個(gè)元素后,b序列去掉最后1個(gè)序列,2個(gè)序列的item完全一致,則代表可以連接,由b的最后一個(gè)元素加入到a中,至于是以獨(dú)立項(xiàng)集的身份加入還是加入到a中最后1個(gè)項(xiàng)集中取決于b中的最后一個(gè)元素所屬項(xiàng)集是否為單項(xiàng)項(xiàng)集。

時(shí)間約束計(jì)算

這個(gè)是用在支持度計(jì)數(shù)使用的,GSP算法的支持度計(jì)算不是那么簡(jiǎn)單,比如序列判斷<2, <3, 4>>是否在序列, 2>,這就不能僅僅判斷序列中是否只包含2,<3, 4>就行了,還要滿足時(shí)間間隔約束,這就要把2,和<3,4>的所有出現(xiàn)時(shí)間都找出來,然后再里面找出一條滿足時(shí)間約束的路徑就算包含。時(shí)間的定義是從左往右起1.2,3...繼續(xù),以1個(gè)項(xiàng)集為單位,所有2的時(shí)間有2個(gè)分別為t=2和t=4,然后同理,因?yàn)?lt;3,4>在序列中只有1次,所以時(shí)間為t=3,所以問題就變?yōu)榱讼旅嬉粋€(gè)數(shù)組的問題

2 ?4

3

從時(shí)間數(shù)組的上往下,通過對(duì)多個(gè)時(shí)間的組合,找出1條滿足時(shí)間約束的方案,這里的方案只有2-3,4-3,然后判斷時(shí)間間隔,如果存在這樣的方式,則代表此序列支持所給定序列,支持度值加1,這個(gè)算法在程序的實(shí)現(xiàn)中是比較復(fù)雜的。

算法的代碼實(shí)現(xiàn)

測(cè)試數(shù)據(jù)輸入(格式:事務(wù)ID item數(shù) item1 item2.....):

1 2 1 5

1 1 2

1 1 3

1 1 4

2 1 1

2 1 3

2 1 4

2 2 3 5

3 1 1

3 1 2

3 1 3

3 1 4

3 1 5

4 1 1

4 1 3

4 1 5

5 1 4

5 1 5最后組成的序列為:

<1 3 4 (3,5)>

<1 2 3 4 5>

<1 3 5>

<4 5>

也就是說同一序列都是同事務(wù)的。下面是關(guān)鍵的類

Sequence.java:

package DataMining_GSP;

import java.util.ArrayList;

/**

* 序列,每個(gè)序列內(nèi)部包含多組ItemSet項(xiàng)集

*

* @author lyq

*

*/

public class Sequence implements Comparable, Cloneable {

// 序列所屬事務(wù)ID

private int trsanctionID;

// 項(xiàng)集列表

private ArrayList itemSetList;

public Sequence(int trsanctionID) {

this.trsanctionID = trsanctionID;

this.itemSetList = new ArrayList<>();

}

public Sequence() {

this.itemSetList = new ArrayList<>();

}

public int getTrsanctionID() {

return trsanctionID;

}

public void setTrsanctionID(int trsanctionID) {

this.trsanctionID = trsanctionID;

}

public ArrayList getItemSetList() {

return itemSetList;

}

public void setItemSetList(ArrayList itemSetList) {

this.itemSetList = itemSetList;

}

/**

* 取出序列中第一個(gè)項(xiàng)集的第一個(gè)元素

*

* @return

*/

public Integer getFirstItemSetNum() {

return this.getItemSetList().get(0).getItems().get(0);

}

/**

* 獲取序列中最后一個(gè)項(xiàng)集

*

* @return

*/

public ItemSet getLastItemSet() {

return getItemSetList().get(getItemSetList().size() - 1);

}

/**

* 獲取序列中最后一個(gè)項(xiàng)集的最后一個(gè)一個(gè)元素

*

* @return

*/

public Integer getLastItemSetNum() {

ItemSet lastItemSet = getItemSetList().get(getItemSetList().size() - 1);

int lastItemNum = lastItemSet.getItems().get(

lastItemSet.getItems().size() - 1);

return lastItemNum;

}

/**

* 判斷序列中最后一個(gè)項(xiàng)集是否為單一的值

*

* @return

*/

public boolean isLastItemSetSingleNum() {

ItemSet lastItemSet = getItemSetList().get(getItemSetList().size() - 1);

int size = lastItemSet.getItems().size();

return size == 1 ? true : false;

}

@Override

public int compareTo(Sequence o) {

// TODO Auto-generated method stub

return this.getFirstItemSetNum().compareTo(o.getFirstItemSetNum());

}

@Override

protected Object clone() throws CloneNotSupportedException {

// TODO Auto-generated method stub

return super.clone();

}

/**

* 拷貝一份一模一樣的序列

*/

public Sequence copySeqence(){

Sequence copySeq = new Sequence();

for(ItemSet itemSet: this.itemSetList){

copySeq.getItemSetList().add(new ItemSet(itemSet.copyItems()));

}

return copySeq;

}

/**

* 比較2個(gè)序列是否相等,需要判斷內(nèi)部的每個(gè)項(xiàng)集是否完全一致

*

* @param seq

* 比較的序列對(duì)象

* @return

*/

public boolean compareIsSame(Sequence seq) {

boolean result = true;

ArrayList itemSetList2 = seq.getItemSetList();

ItemSet tempItemSet1;

ItemSet tempItemSet2;

if (itemSetList2.size() != this.itemSetList.size()) {

return false;

}

for (int i = 0; i < itemSetList2.size(); i++) {

tempItemSet1 = this.itemSetList.get(i);

tempItemSet2 = itemSetList2.get(i);

if (!tempItemSet1.compareIsSame(tempItemSet2)) {

// 只要不相等,直接退出函數(shù)

result = false;

break;

}

}

return result;

}

/**

* 生成此序列的所有子序列

*

* @return

*/

public ArrayList createChildSeqs() {

ArrayList childSeqs = new ArrayList<>();

ArrayList tempItems;

Sequence tempSeq = null;

ItemSet tempItemSet;

for (int i = 0; i < this.itemSetList.size(); i++) {

tempItemSet = itemSetList.get(i);

if (tempItemSet.getItems().size() == 1) {

tempSeq = this.copySeqence();

// 如果只有項(xiàng)集中只有1個(gè)元素,則直接移除

tempSeq.itemSetList.remove(i);

childSeqs.add(tempSeq);

} else {

tempItems = tempItemSet.getItems();

for (int j = 0; j < tempItems.size(); j++) {

tempSeq = this.copySeqence();

// 在拷貝的序列中移除一個(gè)數(shù)字

tempSeq.getItemSetList().get(i).getItems().remove(j);

childSeqs.add(tempSeq);

}

}

}

return childSeqs;

}

}ItemSet.java:

package DataMining_GSP;

import java.util.ArrayList;

/**

* 序列中的子項(xiàng)集

*

* @author lyq

*

*/

public class ItemSet {

/**

* 項(xiàng)集中保存的是數(shù)字項(xiàng)數(shù)組

*/

private ArrayList items;

public ItemSet(String[] itemStr) {

items = new ArrayList<>();

for (String s : itemStr) {

items.add(Integer.parseInt(s));

}

}

public ItemSet(int[] itemNum) {

items = new ArrayList<>();

for (int num : itemNum) {

items.add(num);

}

}

public ItemSet(ArrayList itemNum) {

this.items = itemNum;

}

public ArrayList getItems() {

return items;

}

public void setItems(ArrayList items) {

this.items = items;

}

/**

* 判斷2個(gè)項(xiàng)集是否相等

*

* @param itemSet

* 比較對(duì)象

* @return

*/

public boolean compareIsSame(ItemSet itemSet) {

boolean result = true;

if (this.items.size() != itemSet.items.size()) {

return false;

}

for (int i = 0; i < itemSet.items.size(); i++) {

if (this.items.get(i) != itemSet.items.get(i)) {

// 只要有值不相等,直接算作不相等

result = false;

break;

}

}

return result;

}

/**

* 拷貝項(xiàng)集中同樣的數(shù)據(jù)一份

*

* @return

*/

public ArrayList copyItems() {

ArrayList copyItems = new ArrayList<>();

for (int num : this.items) {

copyItems.add(num);

}

return copyItems;

}

}GSPTool.java(算法工具類):

package DataMining_GSP;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.Map;

/**

* GSP序列模式分析算法

*

* @author lyq

*

*/

public class GSPTool {

// 測(cè)試數(shù)據(jù)文件地址

private String filePath;

// 最小支持度閾值

private int minSupportCount;

// 時(shí)間最小間隔

private int min_gap;

// 時(shí)間最大間隔

private int max_gap;

// 原始數(shù)據(jù)序列

private ArrayList totalSequences;

// GSP算法中產(chǎn)生的所有的頻繁項(xiàng)集序列

private ArrayList totalFrequencySeqs;

// 序列項(xiàng)數(shù)字對(duì)時(shí)間的映射圖容器

private ArrayList>> itemNum2Time;

public GSPTool(String filePath, int minSupportCount, int min_gap,

int max_gap) {

this.filePath = filePath;

this.minSupportCount = minSupportCount;

this.min_gap = min_gap;

this.max_gap = max_gap;

totalFrequencySeqs = new ArrayList<>();

readDataFile();

}

/**

* 從文件中讀取數(shù)據(jù)

*/

private void readDataFile() {

File file = new File(filePath);

ArrayList dataArray = new ArrayList();

try {

BufferedReader in = new BufferedReader(new FileReader(file));

String str;

String[] tempArray;

while ((str = in.readLine()) != null) {

tempArray = str.split(" ");

dataArray.add(tempArray);

}

in.close();

} catch (IOException e) {

e.getStackTrace();

}

HashMap mapSeq = new HashMap<>();

Sequence seq;

ItemSet itemSet;

int tID;

String[] itemStr;

for (String[] str : dataArray) {

tID = Integer.parseInt(str[0]);

itemStr = new String[Integer.parseInt(str[1])];

System.arraycopy(str, 2, itemStr, 0, itemStr.length);

itemSet = new ItemSet(itemStr);

if (mapSeq.containsKey(tID)) {

seq = mapSeq.get(tID);

} else {

seq = new Sequence(tID);

}

seq.getItemSetList().add(itemSet);

mapSeq.put(tID, seq);

}

// 將序列圖加入到序列List中

totalSequences = new ArrayList<>();

for (Map.Entry entry : mapSeq.entrySet()) {

totalSequences.add((Sequence) entry.getValue());

}

}

/**

* 生成1頻繁項(xiàng)集

*

* @return

*/

private ArrayList generateOneFrequencyItem() {

int count = 0;

int currentTransanctionID = 0;

Sequence tempSeq;

ItemSet tempItemSet;

HashMap itemNumMap = new HashMap<>();

ArrayList seqList = new ArrayList<>();

for (Sequence seq : totalSequences) {

for (ItemSet itemSet : seq.getItemSetList()) {

for (int num : itemSet.getItems()) {

// 如果沒有此種類型項(xiàng),則進(jìn)行添加操作

if (!itemNumMap.containsKey(num)) {

itemNumMap.put(num, 1);

}

}

}

}

boolean isContain = false;

int number = 0;

for (Map.Entry entry : itemNumMap.entrySet()) {

count = 0;

number = (int) entry.getKey();

for (Sequence seq : totalSequences) {

isContain = false;

for (ItemSet itemSet : seq.getItemSetList()) {

for (int num : itemSet.getItems()) {

if (num == number) {

isContain = true;

break;

}

}

if(isContain){

break;

}

}

if(isContain){

count++;

}

}

itemNumMap.put(number, count);

}

for (Map.Entry entry : itemNumMap.entrySet()) {

count = (int) entry.getValue();

if (count >= minSupportCount) {

tempSeq = new Sequence();

tempItemSet = new ItemSet(new int[] { (int) entry.getKey() });

tempSeq.getItemSetList().add(tempItemSet);

seqList.add(tempSeq);

}

}

// 將序列升序排列

Collections.sort(seqList);

// 將頻繁1項(xiàng)集加入總頻繁項(xiàng)集列表中

totalFrequencySeqs.addAll(seqList);

return seqList;

}

/**

* 通過1頻繁項(xiàng)集連接產(chǎn)生2頻繁項(xiàng)集

*

* @param oneSeq

* 1頻繁項(xiàng)集序列

* @return

*/

private ArrayList generateTwoFrequencyItem(

ArrayList oneSeq) {

Sequence tempSeq;

ArrayList resultSeq = new ArrayList<>();

ItemSet tempItemSet;

int num1;

int num2;

// 假如將,2個(gè)1頻繁項(xiàng)集做連接組合,可以分為

// 注意此時(shí)的每個(gè)序列中包含2個(gè)獨(dú)立項(xiàng)集

for (int i = 0; i < oneSeq.size(); i++) {

num1 = oneSeq.get(i).getFirstItemSetNum();

for (int j = 0; j < oneSeq.size(); j++) {

num2 = oneSeq.get(j).getFirstItemSetNum();

tempSeq = new Sequence();

tempItemSet = new ItemSet(new int[] { num1 });

tempSeq.getItemSetList().add(tempItemSet);

tempItemSet = new ItemSet(new int[] { num2 });

tempSeq.getItemSetList().add(tempItemSet);

if (countSupport(tempSeq) >= minSupportCount) {

resultSeq.add(tempSeq);

}

}

}

// 上面連接還有1種情況是每個(gè)序列中只包含有一個(gè)項(xiàng)集的情況,此時(shí)a,b的劃分則是

for (int i = 0; i < oneSeq.size(); i++) {

num1 = oneSeq.get(i).getFirstItemSetNum();

for (int j = i; j < oneSeq.size(); j++) {

num2 = oneSeq.get(j).getFirstItemSetNum();

tempSeq = new Sequence();

tempItemSet = new ItemSet(new int[] { num1, num2 });

tempSeq.getItemSetList().add(tempItemSet);

if (countSupport(tempSeq) >= minSupportCount) {

resultSeq.add(tempSeq);

}

}

}

// 同樣將2頻繁項(xiàng)集加入到總頻繁項(xiàng)集中

totalFrequencySeqs.addAll(resultSeq);

return resultSeq;

}

/**

* 根據(jù)上次的頻繁集連接產(chǎn)生新的侯選集

*

* @param seqList

* 上次產(chǎn)生的候選集

* @return

*/

private ArrayList generateCandidateItem(

ArrayList seqList) {

Sequence tempSeq;

ArrayList tempNumArray;

ArrayList resultSeq = new ArrayList<>();

// 序列數(shù)字項(xiàng)列表

ArrayList> seqNums = new ArrayList<>();

for (int i = 0; i < seqList.size(); i++) {

tempNumArray = new ArrayList<>();

tempSeq = seqList.get(i);

for (ItemSet itemSet : tempSeq.getItemSetList()) {

tempNumArray.addAll(itemSet.copyItems());

}

seqNums.add(tempNumArray);

}

ArrayList array1;

ArrayList array2;

// 序列i,j的拷貝

Sequence seqi = null;

Sequence seqj = null;

// 判斷是否能夠連接,默認(rèn)能連接

boolean canConnect = true;

// 進(jìn)行連接運(yùn)算,包括自己與自己連接

for (int i = 0; i < seqNums.size(); i++) {

for (int j = 0; j < seqNums.size(); j++) {

array1 = (ArrayList) seqNums.get(i).clone();

array2 = (ArrayList) seqNums.get(j).clone();

// 將第一個(gè)數(shù)字組去掉第一個(gè),第二個(gè)數(shù)字組去掉最后一個(gè),如果剩下的部分相等,則可以連接

array1.remove(0);

array2.remove(array2.size() - 1);

canConnect = true;

for (int k = 0; k < array1.size(); k++) {

if (array1.get(k) != array2.get(k)) {

canConnect = false;

break;

}

}

if (canConnect) {

seqi = seqList.get(i).copySeqence();

seqj = seqList.get(j).copySeqence();

int lastItemNum = seqj.getLastItemSetNum();

if (seqj.isLastItemSetSingleNum()) {

// 如果j序列的最后項(xiàng)集為單一值,則最后一個(gè)數(shù)字以獨(dú)立項(xiàng)集加入i序列

ItemSet itemSet = new ItemSet(new int[] { lastItemNum });

seqi.getItemSetList().add(itemSet);

} else {

// 如果j序列的最后項(xiàng)集為非單一值,則最后一個(gè)數(shù)字加入i序列最后一個(gè)項(xiàng)集中

ItemSet itemSet = seqi.getLastItemSet();

itemSet.getItems().add(lastItemNum);

}

// 判斷是否超過最小支持度閾值

if (isChildSeqContained(seqi)

&& countSupport(seqi) >= minSupportCount) {

resultSeq.add(seqi);

}

}

}

}

totalFrequencySeqs.addAll(resultSeq);

return resultSeq;

}

/**

* 判斷此序列的所有子序列是否也是頻繁序列

*

* @param seq

* 待比較序列

* @return

*/

private boolean isChildSeqContained(Sequence seq) {

boolean isContained = false;

ArrayList childSeqs;

childSeqs = seq.createChildSeqs();

for (Sequence tempSeq : childSeqs) {

isContained = false;

for (Sequence frequencySeq : totalFrequencySeqs) {

if (tempSeq.compareIsSame(frequencySeq)) {

isContained = true;

break;

}

}

if (!isContained) {

break;

}

}

return isContained;

}

/**

* 候選集判斷支持度的值

*

* @param seq

* 待判斷序列

* @return

*/

private int countSupport(Sequence seq) {

int count = 0;

int matchNum = 0;

Sequence tempSeq;

ItemSet tempItemSet;

HashMap timeMap;

ArrayList itemSetList;

ArrayList> numArray = new ArrayList<>();

// 每項(xiàng)集對(duì)應(yīng)的時(shí)間鏈表

ArrayList> timeArray = new ArrayList<>();

for (ItemSet itemSet : seq.getItemSetList()) {

numArray.add(itemSet.getItems());

}

for (int i = 0; i < totalSequences.size(); i++) {

timeArray = new ArrayList<>();

for (int s = 0; s < numArray.size(); s++) {

ArrayList childNum = numArray.get(s);

ArrayList localTime = new ArrayList<>();

tempSeq = totalSequences.get(i);

itemSetList = tempSeq.getItemSetList();

for (int j = 0; j < itemSetList.size(); j++) {

tempItemSet = itemSetList.get(j);

matchNum = 0;

int t = 0;

if (tempItemSet.getItems().size() == childNum.size()) {

timeMap = itemNum2Time.get(i).get(j);

// 只有當(dāng)項(xiàng)集長(zhǎng)度匹配時(shí)才匹配

for (int k = 0; k < childNum.size(); k++) {

if (timeMap.containsKey(childNum.get(k))) {

matchNum++;

t = timeMap.get(childNum.get(k));

}

}

// 如果完全匹配,則記錄時(shí)間

if (matchNum == childNum.size()) {

localTime.add(t);

}

}

}

if (localTime.size() > 0) {

timeArray.add(localTime);

}

}

// 判斷時(shí)間是否滿足時(shí)間最大最小約束,如果滿足,則此條事務(wù)包含候選事務(wù)

if (timeArray.size() == numArray.size()

&& judgeTimeInGap(timeArray)) {

count++;

}

}

return count;

}

/**

* 判斷事務(wù)是否滿足時(shí)間約束

*

* @param timeArray

* 時(shí)間數(shù)組,每行代表各項(xiàng)集的在事務(wù)中的發(fā)生時(shí)間鏈表

* @return

*/

private boolean judgeTimeInGap(ArrayList> timeArray) {

boolean result = false;

int preTime = 0;

ArrayList firstTimes = timeArray.get(0);

timeArray.remove(0);

if (timeArray.size() == 0) {

return false;

}

for (int i = 0; i < firstTimes.size(); i++) {

preTime = firstTimes.get(i);

if (dfsJudgeTime(preTime, timeArray)) {

result = true;

break;

}

}

return result;

}

/**

* 深度優(yōu)先遍歷時(shí)間,判斷是否有符合條件的時(shí)間間隔

*

* @param preTime

* @param timeArray

* @return

*/

private boolean dfsJudgeTime(int preTime,

ArrayList> timeArray) {

boolean result = false;

ArrayList> timeArrayClone = (ArrayList>) timeArray

.clone();

ArrayList firstItemItem = timeArrayClone.get(0);

for (int i = 0; i < firstItemItem.size(); i++) {

if (firstItemItem.get(i) - preTime >= min_gap

&& firstItemItem.get(i) - preTime <= max_gap) {

// 如果此2項(xiàng)間隔時(shí)間滿足時(shí)間約束,則繼續(xù)往下遞歸

preTime = firstItemItem.get(i);

timeArrayClone.remove(0);

if (timeArrayClone.size() == 0) {

return true;

} else {

result = dfsJudgeTime(preTime, timeArrayClone);

if (result) {

return true;

}

}

}

}

return result;

}

/**

* 初始化序列項(xiàng)到時(shí)間的序列圖,為了后面的時(shí)間約束計(jì)算

*/

private void initItemNumToTimeMap() {

Sequence seq;

itemNum2Time = new ArrayList<>();

HashMap tempMap;

ArrayList> tempMapList;

for (int i = 0; i < totalSequences.size(); i++) {

seq = totalSequences.get(i);

tempMapList = new ArrayList<>();

for (int j = 0; j < seq.getItemSetList().size(); j++) {

ItemSet itemSet = seq.getItemSetList().get(j);

tempMap = new HashMap<>();

for (int itemNum : itemSet.getItems()) {

tempMap.put(itemNum, j + 1);

}

tempMapList.add(tempMap);

}

itemNum2Time.add(tempMapList);

}

}

/**

* 進(jìn)行GSP算法計(jì)算

*/

public void gspCalculate() {

ArrayList oneSeq;

ArrayList twoSeq;

ArrayList candidateSeq;

initItemNumToTimeMap();

oneSeq = generateOneFrequencyItem();

twoSeq = generateTwoFrequencyItem(oneSeq);

candidateSeq = twoSeq;

// 不斷連接生產(chǎn)候選集,直到?jīng)]有產(chǎn)生出侯選集

for (;;) {

candidateSeq = generateCandidateItem(candidateSeq);

if (candidateSeq.size() == 0) {

break;

}

}

outputSeqence(totalFrequencySeqs);

}

/**

* 輸出序列列表信息

*

* @param outputSeqList

* 待輸出序列列表

*/

private void outputSeqence(ArrayList outputSeqList) {

for (Sequence seq : outputSeqList) {

System.out.print("

for (ItemSet itemSet : seq.getItemSetList()) {

System.out.print("(");

for (int num : itemSet.getItems()) {

System.out.print(num + ",");

}

System.out.print("), ");

}

System.out.println(">");

}

}

}調(diào)用類Client.java:

package DataMining_GSP;

/**

* GSP序列模式分析算法

* @author lyq

*

*/

public class Client {

public static void main(String[] args){

String filePath = "C:\\Users\\lyq\\Desktop\\icon\\testInput.txt";

//最小支持度閾值

int minSupportCount = 2;

//時(shí)間最小間隔

int min_gap = 1;

//施加最大間隔

int max_gap = 5;

GSPTool tool = new GSPTool(filePath, minSupportCount, min_gap, max_gap);

tool.gspCalculate();

}

}算法的輸出(挖掘出的所有頻繁模式):

算法實(shí)現(xiàn)的難點(diǎn)

1、算法花費(fèi)了幾天的時(shí)間,難點(diǎn)首先在于對(duì)算法原理本身的理解,網(wǎng)上對(duì)于此算法的資料特別少,而且不同的人所表達(dá)的意思 都有少許的不同,講的也不是很詳細(xì),于是就通過閱讀別人的代碼理解GSP算法的原理,我的代碼實(shí)現(xiàn)也是參考了參考資料的C語言的實(shí)現(xiàn)。

2、在實(shí)現(xiàn)時(shí)間約束的支持度計(jì)數(shù)統(tǒng)計(jì)的時(shí)候,調(diào)試了一段時(shí)間,做時(shí)間統(tǒng)計(jì)容易出錯(cuò),因?yàn)閷蛹?jí)實(shí)在太多容易搞暈。

3、還有1個(gè)是Sequence和ItemSet的拷貝時(shí)的引用問題,在產(chǎn)生新的序列時(shí)一定要深拷貝1個(gè)否則導(dǎo)致同一引用會(huì)把原數(shù)據(jù)給改掉的。

GSP算法和Apriori算法的比較

我是都實(shí)現(xiàn)過了GSP算法和Apriori算法的,后者是被稱為關(guān)聯(lián)規(guī)則挖掘算法,偏向于挖掘關(guān)聯(lián)規(guī)則的,2個(gè)算法在連接的操作上有不一樣的地方,還有在數(shù)據(jù)的構(gòu)成方式上,Apriori的數(shù)據(jù)會(huì)簡(jiǎn)單一點(diǎn),都是單項(xiàng)單項(xiàng)構(gòu)成的,而且在做支持度統(tǒng)計(jì)的時(shí)候只需判斷存在與否即可。不需要考慮時(shí)間約束。Apriori算法給定K項(xiàng)集,連接到K-1項(xiàng)集算法就停止了,而GSP算法是直到不能夠產(chǎn)生候選集為止。

總結(jié)

以上是生活随笔為你收集整理的java gsp_GSP序列模式分析算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

成人在线观看av | 日韩激情片在线观看 | 久久精品99| 国产97在线播放 | 亚洲天堂网在线视频观看 | 国产一区在线观看免费 | 欧美小视频在线 | 亚洲国产精品女人久久久 | 久草在线最新免费 | 亚洲一级片 | 天天操夜夜爱 | 欧美日韩国产精品一区二区亚洲 | 国产麻豆剧果冻传媒视频播放量 | 国产不卡在线播放 | 在线黄色av | 激情综合色播五月 | 亚洲视频1区2区 | 免费av电影网站 | 懂色av一区二区三区蜜臀 | 99精品在线视频观看 | 9热精品| 美女网站久久 | 国内少妇自拍视频一区 | 亚洲国产免费看 | 黄色aa久久| 在线观看黄污 | 超碰在线99 | 91人人揉日日捏人人看 | 96超碰在线| 欧美日韩3p | japanesexxx乱女另类 | 国产美女视频免费观看的网站 | 超碰97中文| 狠狠干在线 | 激情综合中文娱乐网 | 香蕉在线播放 | 婷婷伊人综合 | 黄色大片日本 | 亚洲 综合 国产 精品 | 久久在线免费观看 | 黄色www在线观看 | 婷婷丁香国产 | 日韩一二三区不卡 | 日韩精选在线观看 | 激情综合五月婷婷 | 亚洲欧美日韩精品久久奇米一区 | 手机色在线 | 国产三级av在线 | 最近高清中文字幕在线国语5 | se婷婷| 久久亚洲二区 | 国产精品精品国产 | 国产99久久久国产精品 | 99国产在线观看 | 国产精品黄色av | 色.www| 在线观看成人网 | av在线精品 | 日韩av影视在线观看 | 国产高清一区二区 | 国产伦理剧| 亚洲自拍偷拍色图 | 精品婷婷 | 色天堂在线视频 | 久草电影在线观看 | 国产无区一区二区三麻豆 | av网站在线免费观看 | www.婷婷com| 国产一级免费播放 | 四虎最新域名 | 日韩欧美精品在线观看视频 | 国产精品v a免费视频 | 欧美爽爽爽| 久久亚洲综合色 | 欧美一二三区播放 | 国产小视频在线播放 | 欧美国产91 | 久久人人爽av | av大全在线免费观看 | 成年人免费看 | 国产精品久久久久久久久久久久午夜片 | 天天舔天天射天天操 | 日本激情视频中文字幕 | 欧美资源在线观看 | 欧美人人 | 久久久久久久久久久久av | 高潮毛片无遮挡高清免费 | 久久九九久久 | 四川妇女搡bbbb搡bbbb搡 | 日韩二区三区在线观看 | 九九热只有这里有精品 | 天天性天天草 | 中文字幕在线字幕中文 | 伊人伊成久久人综合网小说 | 999视频在线播放 | 久久久午夜精品理论片中文字幕 | 久久a久久| 在线视频观看成人 | 中文字幕一区二区三区四区久久 | 亚洲免费在线观看视频 | 国产自偷自拍 | 免费黄色av电影 | 涩涩网站在线播放 | 欧美性护士 | www.天天色 | 午夜婷婷在线观看 | 高清av中文在线字幕观看1 | 精品国产视频在线观看 | 在线观看的av | 成人欧美日韩国产 | 国产精品免费观看网站 | 在线只有精品 | 伊人影院99 | www.狠狠色 | 婷婷五天天在线视频 | 欧美一二区在线 | 国产在线观看你懂的 | 久久综合偷偷噜噜噜色 | 精品久久久久久电影 | 13日本xxxxxⅹxxx20 | 精品视频免费 | 国产美女在线观看 | 中文视频在线看 | 开心色婷婷 | 五月婷婷六月丁香 | 日韩欧美精品在线观看视频 | 99视频在线免费观看 | 激情在线免费视频 | 免费在线h| 在线观看日本高清mv视频 | 婷婷在线免费视频 | 三级黄免费看 | 亚洲精品视频在 | 黄色a视频免费 | 国产人成在线观看 | 黄色亚洲大片免费在线观看 | 国产精品正在播放 | 麻豆视频在线播放 | 亚洲欧美日本一区二区三区 | 色偷偷88欧美精品久久久 | 国产最新91 | 麻豆91视频 | 经典三级一区 | 国产在线观看午夜 | 成人午夜片av在线看 | 91精品小视频 | 久久99精品久久久久久久久久久久 | 国产精品一区二区吃奶在线观看 | 日韩电影在线一区二区 | 久久精品日本啪啪涩涩 | 懂色av懂色av粉嫩av分享吧 | 久久综合九色综合97婷婷女人 | 中文字幕在线日亚洲9 | 欧美日韩在线播放 | 福利久久 | 又黄又刺激的网站 | h动漫中文字幕 | 最近中文字幕免费大全 | 99精品视频在线观看免费 | 久久99视频 | 中文字幕a∨在线乱码免费看 | 欧美一区二区三区在线视频观看 | 国产精品自拍av | 波多野结衣理论片 | 美女视频免费精品 | 免费情缘| 久久综合九色九九 | 久久久久久国产精品亚洲78 | 亚洲a网 | 欧美一区在线看 | 久久久久久久久黄色 | 少妇自拍av | av免费在线观看1 | 999电影免费在线观看2020 | 在线观看国产麻豆 | 久久久久久久久久免费视频 | 国产精品第三页 | 国产精品大片免费观看 | 亚洲天堂va | 国产视频综合在线 | 久久在线观看 | 九热在线| 国偷自产中文字幕亚洲手机在线 | 国产在线视频一区二区三区 | 欧美一区二视频在线免费观看 | 国产精品久久久久久高潮 | 91在线日本 | 91av大全| 日韩在线观看中文字幕 | 日韩免费三区 | 欧美一区免费在线观看 | 国产成人精品在线播放 | 一二区精品 | 国产精品正在播放 | 免费成人av| 91久久黄色| 干干夜夜| 最近日本mv字幕免费观看 | 久久午夜精品 | 亚洲三级影院 | 国产精品久久久久久久久免费 | av片免费播放 | 欧美日韩国产一区二区三区在线观看 | av电影一区二区 | 黄色av电影免费观看 | a在线观看视频 | 日韩电影一区二区三区 | 日韩大片免费在线观看 | 国产精品视频在线看 | 久久午夜精品影院一区 | 夜添久久精品亚洲国产精品 | 一本一本久久a久久精品综合妖精 | 国产剧情在线一区 | 亚洲国产大片 | 久久成人国产精品一区二区 | 黄色av电影免费观看 | 又黄又网站| 亚洲精品999 | 欧美色图亚洲图片 | 国产成人av免费在线观看 | 国产一区精品在线 | 97超碰人人 | 免费福利在线视频 | 免费看的黄色网 | 一区二区三区不卡在线 | 99久久超碰中文字幕伊人 | 久久久免费精品国产一区二区 | 亚洲老妇xxxxxx| 亚洲激情视频 | 精品黄色视 | 久久欧美综合 | 日韩电影中文字幕在线观看 | 996久久国产精品线观看 | 五月婷婷丁香六月 | 久久久久99精品国产片 | 欧美另类网站 | 天天射网 | 天天操天天干天天插 | 99免费在线播放99久久免费 | 成人免费观看完整版电影 | 欧美不卡视频在线 | 亚洲区精品 | 久久人人爽人人人人片 | 中文av资源站 | 日韩在线不卡 | 亚洲精品视| 九九热在线精品 | 99精品国产免费久久 | 亚洲精品小视频在线观看 | 国产色拍拍拍拍在线精品 | av电影中文字幕 | 日韩欧美一区二区三区免费观看 | 日韩在线观看影院 | 激情久久久久久久久久久久久久久久 | 五月天婷婷丁香花 | 久久精品99精品国产香蕉 | 中文字幕最新精品 | 成年人视频免费在线播放 | 久久99国产综合精品免费 | av在线永久免费观看 | 精品国产一区二区三区日日嗨 | 国产色网站 | 四虎永久免费 | 国产精品久久久久久久久久白浆 | 精品一区 在线 | 成人免费影院 | 91最新在线视频 | 国产一二三区av | 超碰在97 | av高清一区 | 黄色免费在线视频 | 国产在线国偷精品产拍免费yy | 精品久久久久久久久久国产 | 亚洲精品成人av在线 | 天天爱av导航 | 国产美女在线免费观看 | 欧美精品天堂 | 国产一区二区精品久久91 | 国产区 在线 | 中文字幕电影网 | 免费男女羞羞的视频网站中文字幕 | 日日夜夜精品免费 | 国产电影黄色av | 国产一二三精品 | 色多视频在线观看 | 日韩av在线资源 | 激情av五月婷婷 | 国产精品成人免费精品自在线观看 | 国内久久精品视频 | 国产精品久久99综合免费观看尤物 | 色综合天天天天做夜夜夜夜做 | 欧美天天干 | av免费观看网站 | 欧美国产日韩一区二区 | 丰满少妇高潮在线观看 | 综合色中文 | 91av在线免费视频 | 黄色网址中文字幕 | 久久国产成人午夜av影院宅 | 在线一二区 | 亚洲va欧美va人人爽 | 国产一二区视频 | 美女黄频视频大全 | 精品久久久久久久久久久久 | 亚洲国产中文字幕在线 | 国产精品免费在线观看视频 | 国产91免费在线 | 日本精品久久久久 | 欧美另类v | 欧美日韩国产在线一区 | 国产精品视频你懂的 | 国产精华国产精品 | 日韩电影中文字幕在线观看 | 国产精品毛片完整版 | 日韩精品在线看 | 国产精品理论片在线观看 | 日日摸日日碰 | 午夜视频不卡 | 中文字幕高清免费日韩视频在线 | 国产精品一区二区中文字幕 | 9999精品免费视频 | 国产成人一级电影 | 精品视频免费观看 | 婷婷爱五月天 | 四虎国产视频 | 久久成熟| 免费黄色在线播放 | 91高清完整版在线观看 | 制服丝袜一区二区 | 亚洲国产精品成人精品 | 久久久精品国产免费观看同学 | 伊人久久电影网 | 免费观看9x视频网站在线观看 | 81精品国产乱码久久久久久 | 日韩久久一区 | 日韩视频免费观看高清完整版在线 | 亚洲视频99| 九九九热| 亚洲国产成人在线 | 久久免费国产精品1 | 天堂视频中文在线 | 欧美福利在线播放 | 免费看片成人 | 精品国产视频一区 | 国产成人一区二区三区 | 国产精品毛片一区视频播不卡 | 特级xxxxx欧美 | 成人av在线播放网站 | 日本中文字幕在线一区 | 中文字幕在 | 国产三级久久久 | 日韩亚洲在线视频 | 免费麻豆 | 成人在线视频一区 | 欧美日韩在线精品 | 国产日韩欧美网站 | 99精品电影| 五月天堂网 | 九九国产精品视频 | 九色最新网址 | 久久撸在线视频 | 4438全国亚洲精品在线观看视频 | 91精品国产91久久久久久三级 | 特级西西www44高清大胆图片 | 国产成人av网站 | 婷婷日| 国产激情电影综合在线看 | 天天色天天上天天操 | 天天做日日爱夜夜爽 | 天堂中文在线视频 | 91麻豆精品国产91 | 国产人成看黄久久久久久久久 | 色婷婷视频在线 | 亚洲成人免费在线观看 | 人人超在线公开视频 | av大全在线免费观看 | 色噜噜狠狠狠狠色综合久不 | www.狠狠操 | 午夜18视频在线观看 | 一区中文字幕电影 | 一区二区av| 99视频在线观看视频 | 成人免费在线电影 | 在线观看亚洲a | 天天操偷偷干 | 国产精品99久久久久久小说 | 日韩激情在线视频 | 一区二区久久 | 国产精品观看视频 | 99国产精品久久久久久久久久 | 国产精品久久久久久久久久久久午夜片 | 日韩三级久久 | 国产高清av | 婷婷看片 | 久久久久综合 | 91经典在线 | 久久草av | 又黄又爽又无遮挡的视频 | 国产高清久久久 | 亚洲精品久久在线 | 91精选| 日韩在线观看第一页 | 西西444www高清大胆 | 久久午夜电影网 | 成人免费观看电影 | 日韩簧片在线观看 | 久久精品99久久 | 久久福利电影 | 国产精品美女久久久网av | 久草在线在线精品观看 | 看污网站 | 欧美成年黄网站色视频 | 制服丝袜天堂 | 这里只有精品视频在线 | 久久久久久不卡 | 一区二区三区免费在线观看 | 国产精品久久久久999 | 免费的黄色av | 奇米影音四色 | 国产一区成人 | 天天射成人| 日韩a级黄色 | 99久久精品无码一区二区毛片 | 美女视频一区 | 亚洲 成人 一区 | 国产精品日韩 | 久久成人精品电影 | 婷婷网在线| 国产香蕉视频在线观看 | 91成人精品一区在线播放69 | 97视频在线看 | 久久精品这里热有精品 | 在线观看黄色av | 最新午夜| 狠狠色狠狠色综合日日92 | 精品国产乱码久久久久久三级人 | 亚洲国产一区二区精品专区 | 草在线视频 | 久久er99热精品一区二区三区 | 黄色一级在线免费观看 | 夜夜夜草| 国产成人av电影 | av中文字幕第一页 | 99性视频| 精品字幕| 亚洲色图激情文学 | 久久久久久久久爱 | 色999视频| 99这里都是精品 | 狠狠色丁香久久婷婷综合五月 | 亚洲三级网| 黄色av网站在线免费观看 | 操久| 九九热免费精品视频 | 国产真实在线 | 日日操天天操夜夜操 | 成人一区二区在线 | 91人人人| 激情综合久久 | 在线成人中文字幕 | 极品久久久久久久 | 99精品在线免费视频 | www天天干com | www免费在线观看 | a在线播放| 亚洲综合小说 | 黄色av观看 | 国产精品久久久久亚洲影视 | 不卡精品 | 99热这里只有精品免费 | 99久久www免费| 99r在线观看| 91福利试看 | 少妇搡bbbb搡bbb搡69 | 日韩av中文在线观看 | 一区二区精品在线 | 国产精品不卡一区 | www免费看片com | 国产色综合| 国产97色在线 | 99精品在线看 | 亚洲精品在线国产 | 怡红院av久久久久久久 | 国产黄色片免费看 | 午夜精品一区二区三区可下载 | 最近中文字幕高清字幕免费mv | 亚洲激情 在线 | 免费观看成人av | 欧美综合久久久 | 成人免费观看大片 | 色www精品视频在线观看 | 视频直播国产精品 | 久久视频二区 | 久久香蕉电影 | 久久久免费精品视频 | 午夜男人影院 | 一级做a爱片性色毛片www | 天天操天天干天天玩 | 久久天堂亚洲 | 欧美一区二区三区在线 | 91亚洲免费| 91福利影院在线观看 | 日韩精品欧美精品 | 中文一区二区三区在线观看 | www五月天婷婷 | av电影免费观看 | 免费观看成人 | 国产美女在线免费观看 | 午夜精品影院 | 公与妇乱理三级xxx 在线观看视频在线观看 | 日韩久久电影 | 欧美国产日韩一区二区 | 久久久福利视频 | 久久色视频 | 麻豆一区二区三区视频 | 97成人在线观看视频 | 狠狠网站 | 少妇bbw揉bbb欧美 | 免费在线观看一级片 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 国产成人精品一区二区三区福利 | 欧美另类色图 | 激情久久伊人 | 天天综合网天天综合色 | 国产一级精品视频 | 亚洲激情影院 | 五月婷婷丁香六月 | 美女久久 | 国产精品毛片一区视频播不卡 | 日韩欧美一区二区在线 | 六月色丁香 | 91精品国产九九九久久久亚洲 | 日韩av午夜在线观看 | 天天在线视频色 | 精品国产综合区久久久久久 | 天天操夜夜拍 | 黄色www免费 | www成人精品 | 六月激情丁香 | 欧美成人亚洲成人 | 五月天六月婷 | 久久久久婷 | 日韩理论 | 一区二区三区电影大全 | 久久综合色8888| 开心色停停 | 伊人激情网 | 麻豆手机在线 | 久久久国产精品一区二区中文 | 日韩欧美中文 | 探花视频在线观看+在线播放 | 欧美一级片在线 | 国产精品自拍av | 天天插伊人 | 日韩欧美视频在线观看免费 | 国产麻豆果冻传媒在线观看 | 香蕉影院在线播放 | 日本中出在线观看 | 99精品视频免费观看视频 | 成人在线视频免费观看 | 国产小视频在线 | 亚洲激色 | 国产精品成人免费 | 国产成人精品av在线观 | 色视频网站免费观看 | 日本公妇色中文字幕 | 又紧又大又爽精品一区二区 | 天天在线免费视频 | av免费线看 | 9热精品| 在线蜜桃视频 | 国产中文a| 欧美日韩不卡一区二区 | 一区二区视频在线观看免费 | 久久五月婷婷综合 | 欧美日韩亚洲在线观看 | 在线久热| 久久99精品久久久久蜜臀 | 91在线观看欧美日韩 | 中文成人字幕 | 国内视频 | 深夜成人av | 在线免费观看视频你懂的 | 欧美日韩精品在线观看 | 99性视频| 在线国产中文字幕 | 蜜臀av免费一区二区三区 | 一区二区不卡视频在线观看 | 免费热情视频 | 中文免费 | 黄色三级在线看 | 超薄丝袜一二三区 | 色视频网址 | 91视频免费视频 | 亚洲精品视频免费在线观看 | 一区二区日韩av | 国产精品久久久久久久久久久久久 | 天天射网 | 日韩在线网 | av免费看在线| 亚洲午夜精品福利 | 色五月激情五月 | 网站在线观看日韩 | 24小时日本在线www免费的 | 特级片免费看 | 亚洲精品中文字幕视频 | 五月开心网 | www.色五月| 欧美成人免费在线 | 国产精品地址 | 黄色大片免费网站 | 在线激情小视频 | 97免费中文视频在线观看 | 黄色视屏在线免费观看 | 日韩精品一区二区在线 | 国产精品 日韩 欧美 | 国产精品福利av | 亚洲精品美女 | 亚洲三级视频 | 亚洲国产精品女人久久久 | 国产激情小视频在线观看 | 精品99在线视频 | 91精品国产麻豆国产自产影视 | 免费一级特黄录像 | 久久精品系列 | 91最新网址在线观看 | 国产精品s色 | 日本黄色免费在线 | 欧美成人高清 | 欧美激情精品一区 | 玖玖视频精品 | 国产一区二区免费在线观看 | 黄色av电影一级片 | 久久激情五月婷婷 | 人人爽久久涩噜噜噜网站 | 天天操天天射天天操 | 色婷婷亚洲 | 久久一区精品 | 成人亚洲精品国产www | www.久久久.cum | 久久九九九九 | 成人免费视频观看 | 亚洲免费av观看 | 久久经典视频 | 六月丁香婷 | 日韩电影久久久 | 亚洲激情综合 | 日韩欧美视频在线播放 | 国产一区二区午夜 | 久久精品久久精品久久精品 | 婷婷国产v亚洲v欧美久久 | 香蕉精品视频在线观看 | 久久久91精品国产一区二区三区 | 视频二区在线 | 亚洲 欧美 国产 va在线影院 | 一级电影免费在线观看 | 91片在线观看 | 成人在线视频论坛 | 91理论电影 | 狠狠操在线 | 色网站免费在线看 | www.色在线| av免费看电影 | 欧美一区免费在线观看 | 久久综合婷婷综合 | 国产一级二级三级在线观看 | 在线观看国产v片 | www.91成人| 亚洲色图美腿丝袜 | 国产精品一区二区在线观看 | www.狠狠插.com| 国产精品久久99精品毛片三a | 国产二区视频在线 | 天天艹| 成年人app网址| 成人免费共享视频 | 在线观看精品 | 成全免费观看视频 | 国精产品999国精产 久久久久 | 日韩成人高清在线 | av在线电影播放 | 亚洲精品www.| 亚洲精品在线一区二区三区 | 亚洲激情 欧美激情 | 免费久久网 | av免费看av| 91精品国产91久久久久 | 成人黄色免费观看 | 国产精品av免费观看 | 永久免费在线 | a级黄色片视频 | 伊人黄色网 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 最新午夜 | 欧美精品在线观看免费 | a在线观看国产 | 激情综合中文娱乐网 | 欧美亚洲精品在线观看 | 久久中文字幕视频 | 在线精品在线 | 国产.精品.日韩.另类.中文.在线.播放 | 亚洲精品在线免费看 | 国产精品原创av片国产免费 | 日韩免费福利 | 日韩在线观看一区二区 | 中文字幕网站 | 欧美日韩在线第一页 | 欧美日韩在线观看一区二区 | 一区二区三区电影在线播 | 在线观看免费版高清版 | 国产精品免费在线播放 | 久久综合五月天婷婷伊人 | 日韩欧美有码在线 | 色欧美综合 | 日韩精品免费一线在线观看 | 国产又黄又爽又猛视频日本 | 9992tv成人免费看片 | 色射色| 久久理论电影网 | 色www永久免费 | 香蕉精品在线观看 | www色,com| 狠狠地操 | 综合网中文字幕 | 国产精品一区二区三区视频免费 | 综合视频在线 | 手机av电影在线 | 天堂av在线中文在线 | 久久国产免费 | 久久免费视频网 | 国产精品一区二区在线免费观看 | 久久精品99久久 | 国产中文字幕免费 | 青春草视频在线播放 | 亚洲清纯国产 | 美女国内精品自产拍在线播放 | 婷色在线 | 97免费视频在线播放 | 亚洲精品婷婷 | 国产一级片视频 | 精品国产乱码久久久久久1区2匹 | 中文字幕在线影院 | 久久久久久伊人 | 久久夜视频 | 99免费精品视频 | 国内精品视频一区二区三区八戒 | 久久久国产精品一区二区三区 | av亚洲产国偷v产偷v自拍小说 | 天天射天天操天天干 | 在线看欧美 | 91麻豆文化传媒在线观看 | 日韩v在线91成人自拍 | 国际av在线 | 91最新在线| 日韩av一区二区在线播放 | 日日夜夜免费精品 | 婷婷免费视频 | 最近中文字幕完整视频高清1 | 久久亚洲综合国产精品99麻豆的功能介绍 | 久久久电影网站 | www.久久久.com | 天天操天 | 久久成人麻豆午夜电影 | 一区在线播放 | 成人日韩av | 午夜精品久久久久久久久久久久 | 99久久国产免费,99久久国产免费大片 | 日本在线成人 | 久久精品一区二区三区中文字幕 | 黄色a在线 | 国内久久久久 | 久久精品一区二区国产 | 国产成人精品久久二区二区 | 91探花国产综合在线精品 | 91高清一区 | 亚洲天堂精品视频在线观看 | 天天干天天碰 | 中文字幕在线网 | 激情av资源网 | 麻豆影音先锋 | 日韩av偷拍| 欧美日韩二区在线 | 色综合久久久久久中文网 | 国产免费观看av | 亚洲精品视频中文字幕 | 91精品视频网站 | 国际精品久久久 | 国产乱码精品一区二区三区介绍 | 国产精品福利久久久 | 国产又粗又长又硬免费视频 | 午夜精品久久久久久 | 久久久久| 日本激情视频中文字幕 | 久久久国产精品久久久 | 日韩在线视频网址 | 日韩特级黄色片 | 久久久精品一区二区 | 国产精品久久久久久久久搜平片 | 久久国产精品二国产精品中国洋人 | 手机在线日韩视频 | 99re热精品视频 | 一色屋精品视频在线观看 | 国产免费视频一区二区裸体 | 国产精品女人久久久 | 日韩激情综合 | 欧美精品午夜 | 在线有码中文字幕 | 亚洲国产美女精品久久久久∴ | 98涩涩国产露脸精品国产网 | 99久久精品久久久久久动态片 | 亚洲天堂网站 | 99热精品久久 | 激情五月播播久久久精品 | 国产在线观看91 | 成人97视频 | 国产日韩欧美中文 | 久久成人在线视频 | 国产福利在线不卡 | 中文字幕乱在线伦视频中文字幕乱码在线 | 亚洲激情精品 | 国产又黄又爽无遮挡 | 久久伊99综合婷婷久久伊 | 色小说在线 | 亚洲国产网站 | 亚洲伊人婷婷 | 午夜视频99| 亚洲黄色免费在线看 | 久久精品官网 | 久久久久 免费视频 | 日韩欧美精品在线观看 | 黄色软件视频网站 | 91成人精品一区在线播放69 | 精品久久久久久亚洲综合网站 | 日韩精品不卡 | 久久9精品| 久久99国产精品 | aaa日本高清在线播放免费观看 | 91九色视频网站 | 日韩中文字幕免费在线播放 | 福利精品在线 | 久久99精品久久久久久清纯直播 | 在线视频成人 | 欧美日韩高清不卡 | 三级动图 | 久久欧美精品 | 丁香花在线视频观看免费 | 911av视频 | 天天干天天想 | 色婷婷综合在线 | 精品国产欧美一区二区三区不卡 | 玖玖精品在线 | 日本一区二区三区视频在线播放 | 欧美激情视频久久 | 在线免费高清一区二区三区 | 婷婷视频导航 | 亚洲成人麻豆 | 欧美一区二区三区在线视频观看 | 国产精品99久久99久久久二8 | 91在线www | 亚洲乱码精品久久久久 | www国产精品com | 99国产成+人+综合+亚洲 欧美 | 精品国产一区在线观看 | 精品美女视频 | 成人福利在线观看 | 99精品乱码国产在线观看 | 天天操天天操天天操天天操天天操 | 久久免费视频在线观看30 | 久99精品 | 欧美久久久久久久久 | 韩国精品在线观看 | 狠狠久久婷婷 | 久久久国产精品亚洲一区 | 国产品久精国精产拍 | 国产精品18久久久 | 天天干天天摸天天操 | 色婷婷国产在线 | 日韩视频www| 天天曰天天爽 | 欧洲精品视频一区二区 | 在线免费观看不卡av | 亚洲国产人午在线一二区 | 亚州中文av | 亚洲九九影院 | 在线免费av网 | 国产精品久久久久久久婷婷 | 免费日p视频 | 99精品视频免费观看视频 | 久久精品91久久久久久再现 | 精品亚洲视频在线观看 | 国产精品一区二区精品视频免费看 | 97在线看片 | 一区二区三区福利 | 91精品国产麻豆 | 在线精品观看 | av先锋中文字幕 | 久久经典国产 | 中文字幕 91 | 亚洲作爱视频 | 二区视频在线观看 | 麻花豆传媒一二三产区 | 在线免费观看国产 | 国产精品精品久久久久久 | 热九九精品 | 免费久久99精品国产 | 亚洲精品99 | 96视频免费在线观看 | 美女一区网站 | 91精品国产99久久久久久红楼 | 国产91在| 天天操天天干天天综合网 | 色婷婷国产精品一区在线观看 | 不卡电影一区二区三区 | 国产精品成人久久久 | 精品久久久久免费极品大片 | 日韩免费b | 日韩精品视频免费看 | 欧美极度另类性三渗透 | 欧美 国产 视频 | 欧美国产日韩在线观看 | 欧美高清视频不卡网 | 日韩乱码在线 | 国内精品久久久久久久久久久久 | www夜夜 | 二区在线播放 | 久久一久久 | 人人搞人人干 | 欧美一级黄色网 | 免费福利在线观看 | 91麻豆精品国产91久久久无限制版 | 96精品高清视频在线观看软件特色 | 欧美日韩视频一区二区三区 | 国产精品国产三级国产专区53 | 成人av免费在线看 | 激情伊人 | 日韩精品欧美一区 | 日韩精品欧美视频 | 国产精品久久久久久久久久三级 | 免费观看成人 | 99精品视频免费全部在线 | 国产精品免费久久久 | 日韩在线观看三区 | 精品久久久久久久久久久久久久久久久久 | 婷婷播播网| 免费视频你懂得 | 激情影音先锋 | 最新精品国产 | 永久免费毛片 | 亚洲精品www久久久 www国产精品com | 欧美日韩在线观看视频 | 国产精品网红直播 | 91福利视频一区 | 狠狠久久综合 | 字幕网资源站中文字幕 | 色免费在线| 国产精品综合久久久久 | 伊人伊成久久人综合网小说 | 天天操夜夜操天天射 | 丁香激情五月婷婷 | 欧美天天综合 | 91精品推荐 | 欧美成年人在线观看 | 99精品视频网 | 四虎影视成人永久免费观看亚洲欧美 | 中文字幕资源站 | 国产剧情在线一区 | 91视视频在线直接观看在线看网页在线看 | 亚洲精品一区二区三区新线路 | 亚洲精品小区久久久久久 | 手机看国产毛片 | 一区二区三区 中文字幕 | 在线观看视频亚洲 | 成年人看片网站 | 精品国偷自产在线 | 婷婷在线免费观看 | 色干综合| 国内精品久久久久久久久久清纯 | 2018亚洲男人天堂 | 97超碰精品 | 国产福利一区在线观看 | 亚洲一区二区麻豆 | 五月天中文在线 | 国产资源 | 日韩丝袜视频 | 成人久久精品视频 | 黄色av一级 | 粉嫩aⅴ一区二区三区 | 欧美性极品xxxx做受 | 伊人午夜视频 | 可以免费观看的av片 | av网址在线播放 | 色悠悠久久综合 | 国产91av视频在线观看 | 国产伦精品一区二区三区在线 | 国产免费大片 | 色av男人的天堂免费在线 | 久久伊人精品天天 | 国产字幕在线看 |