Growth——帮助你成为顶尖开发者的APP

日子过得很快,三周就这样过去了,转眼间在Github上已经又多了六百多次commits。轻轻松松代码就过万了,看来我也是蛮拼的。

不过,灵感来了的感觉还真是好 ~~。

Github-629

Growth介绍

作为一个编程的学习者,我们总要学习很多的知识,但是什么时候学习什么知识就是一个非常有意思的话题。

而且,我们也希望可以在一开始的时候对很多东西都有一个非常好的了解。这就是Growth的Day页面。

Growth Introduction

如上图所示:在这个页面里,我们会有这个主题的简介,以及一些相关工具介绍,当然还有推荐书单。除此,还会有一系列的文章对此进行介绍。如上面的:

  1. 《Git与版本管理》
  2. 《一个构建系统的构建过程》
  3. 《从浏览器到服务器发生了什么》

有时候类似这样的系列的放置一些知识,反而更有利于我们学习。

除此,还会有很多TODO事项来帮助我们快速识别,并完成一些任务。

Growth Todo

当然还会对你进行一个简单的评级,或者总结:

技能图谱

除此,还收纳了一些解决方案和测验:

测验

Github: https://github.com/phodal/growth
下载: http://fir.im/phodal

Climate change and advances in urban technology propel forward the ‘smart city’. As decision makers strive to find a technological fix, smart city strategies are often based on technological orthodoxies which are conceptually and empirically shallow. The motivation behind this paper is to address the conceptual adolescence which relates to the wholesale digitisation of the city by pursuing a twin argument about the democratic and environmental consequences. The authors draw on interdisciplinary theory and insights from urban studies, infrastructure, informatics, and the sociology of the Internet to critique the way the ‘smart city’ is taken forward. It is concluded that private firms market smart city services and solutions based on an ideological legacy of ‘ubiquitous computing’, ‘universal infrastructure’, and ‘green technology’. Based on evidence from three UK cities—Manchester, Birmingham, and Glasgow—it is argued that the underlying principle of future city strategies is to expand the market for new technology products and services to support ‘green growth’ with disregard for their wider impacts. For citizens, becoming a consumer of the technologies is often presented as progressive ‘participation’ or ‘empowerment’ with unknown or hidden consequences both political and environmental. The city systems become a digital marketplace where citizen-consumers’ participation is increasingly involuntary and the hegemony of global technology firms is inflated. What follows is that the city’s ‘intelligent systems’ are defined through a digital consumer experience that has inherent biases and leaves parts of the city and its population unaccounted for. This renders the city less resilient in the face of future social and climatic risks.
FP-growth算法是一种非常常用的关联分析算法,可以用于挖掘数据集中的频繁项集,进而发现数据集中不同项之间的关联关系。C++作为一种高效的编程语言,也可以用于实现FP-growth算法。 下面是一个基于C++类的FP-growth算法实现及案例示例: ```cpp #include <iostream> #include <fstream> #include <algorithm> #include <vector> #include <map> using namespace std; class Node { public: string name; int count; Node* parent; map<string, Node*> children; Node() { name = ""; count = 0; parent = NULL; } Node(string name, int count) { this->name = name; this->count = count; parent = NULL; } void inc(int num) { count += num; } }; class FPTree { public: Node* root; map<string, int> headerTable; FPTree() { root = new Node(); headerTable.clear(); } void insert(vector<string>& transaction) { Node* cur = root; for (int i = 0; i < transaction.size(); i++) { string item = transaction[i]; if (cur->children.count(item) == 0) { cur->children[item] = new Node(item, 1); cur->children[item]->parent = cur; if (headerTable.count(item) == 0) { headerTable[item] = 1; } else { headerTable[item]++; } } else { cur->children[item]->count++; } cur = cur->children[item]; } } }; class FPGrowth { public: FPTree* tree; map<string, int> items; vector<vector<string>> transactions; FPGrowth() { tree = NULL; } void loadTransactions(string filename) { ifstream fin(filename); if (!fin.is_open()) { return; } string line; while (getline(fin, line)) { vector<string> transaction; string item; for (int i = 0; i < line.size(); i++) { if (line[i] == ' ') { if (items.count(item) == 0) { items[item] = 1; } else { items[item]++; } transaction.push_back(item); item = ""; } else { item += line[i]; } } if (!item.empty()) { if (items.count(item) == 0) { items[item] = 1; } else { items[item]++; } transaction.push_back(item); } transactions.push_back(transaction); } fin.close(); } bool cmp(const pair<string, int>& a, const pair<string, int>& b) { return a.second > b.second; } void buildTree() { tree = new FPTree(); for (int i = 0; i < transactions.size(); i++) { vector<string>& transaction = transactions[i]; sort(transaction.begin(), transaction.end(), [&](string a, string b) { return items[a] > items[b]; }); tree->insert(transaction); } } void findPrefixPath(string item, Node* node, vector<Node*>& prefixPath) { while (node != tree->root) { if (node->name == item) { prefixPath.push_back(node); } node = node->parent; } } void mineFrequentItemsets(int minSup) { vector<pair<string, int>> freqItems; for (auto it = items.begin(); it != items.end(); it++) { if (it->second >= minSup) { freqItems.push_back(*it); } } sort(freqItems.begin(), freqItems.end(), cmp); for (int i = 0; i < freqItems.size(); i++) { vector<string> prefix; prefix.push_back(freqItems[i].first); int sup = freqItems[i].second; findPrefixPaths(prefix, tree->headerTable, sup); } } void findPrefixPaths(vector<string>& prefix, map<string, Node*> headerTable, int sup) { string item = prefix[prefix.size() - 1]; Node* node = headerTable[item]->parent; vector<Node*> prefixPath; while (node != tree->root) { prefixPath.clear(); findPrefixPath(item, node, prefixPath); vector<string> subPrefix; for (int i = 0; i < prefix.size() - 1; i++) { subPrefix.push_back(prefix[i]); } subPrefix.push_back(node->name); int count = node->count; for (int i = 0; i < prefixPath.size(); i++) { count = min(count, prefixPath[i]->count); } if (count >= sup) { cout << "{"; for (int i = 0; i < subPrefix.size(); i++) { cout << subPrefix[i] << " "; } cout << item << "} : " << count << endl; findPrefixPaths(subPrefix, node->children, sup); } node = node->parent; } } }; int main() { FPGrowth fpg; fpg.loadTransactions("transactions.txt"); fpg.buildTree(); fpg.mineFrequentItemsets(2); return 0; } ``` 上述代码实现了一个基于类的FP-growth算法,并且支持从文件中加载交易数据,并挖掘出频繁项集。其中,`Node`类表示FP树中的节点,`FPTree`类表示FP树,`FPGrowth`类表示FP-growth算法。具体实现细节可以参考代码注释。 需要注意的是,本示例中的实现仅支持从文件中加载交易数据,并不支持在线实时插入交易数据,如果需要支持在线插入数据,需要对代码进行一定的修改。另外,本示例中的实现也没有进行过多的优化,不适用于大型数据集的挖掘。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值