延安家居建材市场的地址如下:
1、延安圣明宫建材市场地址:延安市宝塔区尹家沟2、建材市场地址:延安市吴起县303省道附近3、家具市场地址:延安市安塞县二零六省道喜洋洋超市附近虽然可能没解决你的实际问题,但是我还是很高兴能为你解答问题。
138路公交线建材城东站选址在建材城大门东侧50米。
成都的建材市场有:百姓家装、博美、金府装饰、512建材、大西南建材等等。
成都百姓家装市场:成都市玉沙路123号;
成都博美装饰城:成都市花牌坊街319号 ;
成都金府装饰城:成都市沙湾路北延线与金府路交汇处 ;
成都512建材市场:成都市二环路北四段3号 ;
成都大西南建材城 :成都市外北洞子口贮木场 ;
成都府河市场地址:成都二环路北二段 ;
成都交大装饰城地址:成都市二环路北一段(西南交大东南角);
成都东泰建材市场地址:成都市二环路西一段红牌楼东泰商城有限公司 ;
成都西南建材中心地址:成都市二环路北三段 ;
成都锦绣家园市场 地址:成都市火车南站 ;
新世纪装饰广场:高升桥路16号;
华科国际家居生活广场位于阳江市阳东区,项目规划面积约22万平方米,建筑面积约为52万平方米,
居然之家阳江店位于阳江市阳东区,项目于2013年9月28日开业,总规划面积约8万平方米,
东门的钢材大市场,火车站建材装饰城,火车站美居建材装饰城,靠近汽车城的汇美家居建材广场,还有兴隆装饰城.大概就这些吧
榕城建材综合市场
美顺建材城
兴荣建材城
河源建材城是一个较大的建材市场,有很多供应商和品牌可以选择。以下是一些建议的建材城供应商:
1. 河源建材城一期:这是河源建材城最早建立的部分,有各类建材供应商,包括瓷砖、卫浴、地板等。
2. 河源建材城二期:二期相对较新,也有很多供应商提供各种建材产品,包括装修材料、门窗、灯具等。
3. 建材城周边:河源建材城附近还有一些独立的建材商铺,也可以考虑去这些地方寻找需要的建材产品。
在选择建材供应商时,可以根据自己的需求和预算进行比较,了解各个供应商的产品质量、价格和售后服务等方面。此外,建议提前做好准备工作,比如了解自己的装修需求,测量尺寸,带好相关的图纸和样品,以便更好地选择和购买合适的建材产品。
国际建材港
建材港划分陶瓷、五金电料水暖、板材油漆、木地板、橱柜、灯饰、门业、玻璃石材型材等,是信阳种类与品牌都多且全的建材市场。
地址:位于鄂豫皖三省交界的信阳市羊山新区东北部南京路146号金达装饰材料大市场
金达装饰市场是信阳规模大、档次高、设施全的专业建材市场市场。包括陶瓷地板、卫生洁具、木制地板、装饰用器、淋浴房、橱柜、装饰石材等。2004年被评为河南省文明诚信建材市场。
地址:信阳市浉河区工区路223号金达建材市场
主营装修材料,细木板、扣板、免漆板、锁具和五金等,比较全面。
地址:信阳市浉河区湖东大道2号
海口金鹿装饰大世界
金鹿装饰大世界在海口开业。由金鹿实业创建的灯具装饰大世界是海口市重点项目,位于海府路,主要销售:灯具灯饰、电料、吊顶、门业、板材装饰等,市场规模8万平方米,汇集了数百个品种的商品。
海口塔光陶瓷市场
塔光陶瓷城是海南省“十佳”专业市场,多年的市场培育、优越的地理位置,以及注重品牌、崇尚精品、恪守诚信的经营理念,使这里成为省内陶瓷交易的首选地之一,目前塔光已发展成占地18.8亩,拥有陶瓷铺面228家的大型专业市场,共有来自全国各地的经营业主85家,从业人员800人以上。
海口万佳家居装饰广场
海南万佳家居装饰广场于 2004 年 10 月 18 日火爆开业, 它的开业创下海南家居建材零售行业多个之最:规模最大、品牌最多、品种最齐、购物环境最好、配套设施最齐、装修档次最高、现代化程度最高和管理最专业,同时,它的开业也标志着海南家居建材零售行业走向规模化、现代化和档次化的发展之路。
海口亚豪建材城
作为本土大型建材商城,亚豪建材城一直致力于打造椰城最好的建材卖场,让消费者享受到最实在的好建材产品。不少消费者因为卖场硬件环境而感叹,理所当然地认为好就是贵的代名词,其实不然。而亚豪建材城的优惠力度一直是行业内的佼佼者,不管是何种促销方式,每次带给消费者的都是实实在在的优惠。因此也获得了消费者的肯定和信任,亚豪建材城也一直在努力为消费者打造最惊爆的特价和最超值的折扣,一路走来,亚豪建材城给消费者带来了一个又一个的惊喜。
海口居然之家
居然之家海口店位于海口市滨海大道96号,西邻美丽的西海岸旅游度假区,是海口最具消费潜力的地区之一;东邻海口秀英港码头,交通便利。海口店全部建成后经营面积约60000平方米,汇集了十余万种国内外知名优产品,一期家具家饰馆已于2010年8月开业。
海口城西建材市场
城西建材交易市场主要由新华建筑陶瓷交易市场和城西路两侧沿街的建材批零铺面组成,目前,该市场共有300间铺面,经营面积为34000平方米,已成为省内主要的 建材批发、零售集散地。该交易市场每年营业额已达5个亿,税收每年约3000万元,提供就业岗位3500个,且带动了运输、装修、饮食、房屋出租、零售、农贸市场等行业的发展。
海口克耐尔厨柜
克耐尔厨柜是一家汇集设计、施工、管理、售后服务等一条龙的专业室内装饰有限公司。在中国独家代理销售“克耐尔橱柜系列”,品质来源于法国。“克耐尔橱柜”服务宗旨:整体设计,跟踪服务。克耐尔凭借成功的品牌策略及规范化、专业化的管理模式,以其专业技术、严格的管理优质服务成就了无数佳品,赢得了广大客户的信赖。
海口和风彩陶厂
海南和风彩陶厂位于海南省中部的海榆中线公路80.5公里处,是专业生产装饰砖瓦的建材企业,主要产品有陶瓷彩釉瓦、劈开砖、广场砖等。
海口新发石材市场
海口新发石材有限公司自成立以来,在全体员工的勤勤恳恳、艰苦奋斗的敬业精神下,脚踏“石”地,始终以质量、信誉、效率、价廉为宗旨和原则,日益发展成今日规模较大,实力雄厚的石材专业公司。
海口金鹿装饰大世界
大自然地板(中国)有限公司为中国地板控股有限公司全资拥有附属公司,以销售大自然实木地板、实木复合地板、生态地板、强化地板为主营业务。自 2001年以来,大自然地板产品销量持续强劲增长,产品市场占有率在同行业中名列前茅,已成为亚洲最大的木地板骨干企业之一,在与中国地板行业一起发展壮大的历程中,大自然地板积极助推中国地板行业发展,为振兴民族工业品牌奉献着自己的力量。大自然地板以前瞻性眼光和全球化视野,致力于打造全球一流地板企业,一个全球化发展战略的国际化品牌已经崛起。
之前看了Mahout官方示例 20news 的调用实现;于是想根据示例的流程实现其他例子。网上看到了一个关于天气适不适合打羽毛球的例子。
训练数据:
Day Outlook Temperature Humidity Wind PlayTennis
D1 Sunny Hot High Weak No
D2 Sunny Hot High Strong No
D3 Overcast Hot High Weak Yes
D4 Rain Mild High Weak Yes
D5 Rain Cool Normal Weak Yes
D6 Rain Cool Normal Strong No
D7 Overcast Cool Normal Strong Yes
D8 Sunny Mild High Weak No
D9 Sunny Cool Normal Weak Yes
D10 Rain Mild Normal Weak Yes
D11 Sunny Mild Normal Strong Yes
D12 Overcast Mild High Strong Yes
D13 Overcast Hot Normal Weak Yes
D14 Rain Mild High Strong No
检测数据:
sunny,hot,high,weak
结果:
Yes=》 0.007039
No=》 0.027418
于是使用Java代码调用Mahout的工具类实现分类。
基本思想:
1. 构造分类数据。
2. 使用Mahout工具类进行训练,得到训练模型。
3。将要检测数据转换成vector数据。
4. 分类器对vector数据进行分类。
接下来贴下我的代码实现=》
1. 构造分类数据:
在hdfs主要创建一个文件夹路径 /zhoujainfeng/playtennis/input 并将分类文件夹 no 和 yes 的数据传到hdfs上面。
数据文件格式,如D1文件内容: Sunny Hot High Weak
2. 使用Mahout工具类进行训练,得到训练模型。
3。将要检测数据转换成vector数据。
4. 分类器对vector数据进行分类。
这三步,代码我就一次全贴出来;主要是两个类 PlayTennis1 和 BayesCheckData = =》
package myTesting.bayes;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.ToolRunner;
import org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob;
import org.apache.mahout.text.SequenceFilesFromDirectory;
import org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles;
public class PlayTennis1 {
private static final String WORK_DIR = "hdfs://192.168.9.72:9000/zhoujianfeng/playtennis";
/*
* 测试代码
*/
public static void main(String[] args) {
//将训练数据转换成 vector数据
makeTrainVector();
//产生训练模型
makeModel(false);
//测试检测数据
BayesCheckData.printResult();
}
public static void makeCheckVector(){
//将测试数据转换成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"testinput";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失败!");
System.exit(1);
}
//将序列化文件转换成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件转换成向量失败!");
System.out.println(2);
}
}
public static void makeTrainVector(){
//将测试数据转换成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"input";
String output = WORK_DIR+Path.SEPARATOR+"tennis-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失败!");
System.exit(1);
}
//将序列化文件转换成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件转换成向量失败!");
System.out.println(2);
}
}
public static void makeModel(boolean completelyNB){
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-vectors"+Path.SEPARATOR+"tfidf-vectors";
String model = WORK_DIR+Path.SEPARATOR+"model";
String labelindex = WORK_DIR+Path.SEPARATOR+"labelindex";
Path in = new Path(input);
Path out = new Path(model);
Path label = new Path(labelindex);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
if(fs.exists(label)){
//boolean参数是,是否递归删除的意思
fs.delete(label, true);
}
TrainNaiveBayesJob tnbj = new TrainNaiveBayesJob();
String[] params =null;
if(completelyNB){
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow","-c"};
}else{
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow"};
}
ToolRunner.run(tnbj, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("生成训练模型失败!");
System.exit(3);
}
}
}
package myTesting.bayes;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.mahout.classifier.naivebayes.BayesUtils;
import org.apache.mahout.classifier.naivebayes.NaiveBayesModel;
import org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier;
import org.apache.mahout.common.Pair;
import org.apache.mahout.common.iterator.sequencefile.PathType;
import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;
import org.apache.mahout.math.RandomAccessSparseVector;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.Vector.Element;
import org.apache.mahout.vectorizer.TFIDF;
import com.google.common.collect.ConcurrentHashMultiset;
import com.google.common.collect.Multiset;
public class BayesCheckData {
private static StandardNaiveBayesClassifier classifier;
private static Map<String, Integer> dictionary;
private static Map<Integer, Long> documentFrequency;
private static Map<Integer, String> labelIndex;
public void init(Configuration conf){
try {
String modelPath = "/zhoujianfeng/playtennis/model";
String dictionaryPath = "/zhoujianfeng/playtennis/tennis-vectors/dictionary.file-0";
String documentFrequencyPath = "/zhoujianfeng/playtennis/tennis-vectors/df-count";
String labelIndexPath = "/zhoujianfeng/playtennis/labelindex";
dictionary = readDictionnary(conf, new Path(dictionaryPath));
documentFrequency = readDocumentFrequency(conf, new Path(documentFrequencyPath));
labelIndex = BayesUtils.readLabelIndex(conf, new Path(labelIndexPath));
NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), conf);
classifier = new StandardNaiveBayesClassifier(model);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("检测数据构造成vectors初始化时报错。。。。");
System.exit(4);
}
}
/**
* 加载字典文件,Key: TermValue; Value:TermID
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<String, Integer> readDictionnary(Configuration conf, Path dictionnaryDir) {
Map<String, Integer> dictionnary = new HashMap<String, Integer>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
String name = path.getName();
return name.startsWith("dictionary.file");
}
};
for (Pair<Text, IntWritable> pair : new SequenceFileDirIterable<Text, IntWritable>(dictionnaryDir, PathType.LIST, filter, conf)) {
dictionnary.put(pair.getFirst().toString(), pair.getSecond().get());
}
return dictionnary;
}
/**
* 加载df-count目录下TermDoc频率文件,Key: TermID; Value:DocFreq
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<Integer, Long> readDocumentFrequency(Configuration conf, Path documentFrequencyDir) {
Map<Integer, Long> documentFrequency = new HashMap<Integer, Long>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
return path.getName().startsWith("part-r");
}
};
for (Pair<IntWritable, LongWritable> pair : new SequenceFileDirIterable<IntWritable, LongWritable>(documentFrequencyDir, PathType.LIST, filter, conf)) {
documentFrequency.put(pair.getFirst().get(), pair.getSecond().get());
}
return documentFrequency;
}
public static String getCheckResult(){
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String classify = "NaN";
BayesCheckData cdv = new BayesCheckData();
cdv.init(conf);
System.out.println("init done...............");
Vector vector = new RandomAccessSparseVector(10000);
TFIDF tfidf = new TFIDF();
//sunny,hot,high,weak
Multiset<String> words = ConcurrentHashMultiset.create();
words.add("sunny",1);
words.add("hot",1);
words.add("high",1);
words.add("weak",1);
int documentCount = documentFrequency.get(-1).intValue(); // key=-1时表示总文档数
for (Multiset.Entry<String> entry : words.entrySet()) {
String word = entry.getElement();
int count = entry.getCount();
Integer wordId = dictionary.get(word); // 需要从dictionary.file-0文件(tf-vector)下得到wordID,
if (StringUtils.isEmpty(wordId.toString())){
continue;
}
if (documentFrequency.get(wordId) == null){
continue;
}
Long freq = documentFrequency.get(wordId);
double tfIdfValue = tfidf.calculate(count, freq.intValue(), 1, documentCount);
vector.setQuick(wordId, tfIdfValue);
}
// 利用贝叶斯算法开始分类,并提取得分最好的分类label
Vector resultVector = classifier.classifyFull(vector);
double bestScore = -Double.MAX_VALUE;
int bestCategoryId = -1;
for(Element element: resultVector.all()) {
int categoryId = element.index();
double score = element.get();
System.out.println("categoryId:"+categoryId+" score:"+score);
if (score > bestScore) {
bestScore = score;
bestCategoryId = categoryId;
}
}
classify = labelIndex.get(bestCategoryId)+"(categoryId="+bestCategoryId+")";
return classify;
}
public static void printResult(){
System.out.println("检测所属类别是:"+getCheckResult());
}
}